約 3,057,845 件
https://w.atwiki.jp/haruhi_vip/pages/1250.html
Report.14 長門有希の憂鬱 その3 ~涼宮ハルヒの追想~ 活動後の部室。ハルヒは独り佇んでいた。他の団員達は先に帰した。夕日に照らされ、オレンジ色に染まった部室。あの日と同じ風景。思い出す、あの日の出来事。 本棚に歩み寄る。ここは本来文芸部室。だから、本棚の蔵書数は北高の全部室中随一だろう。蔵書には、SFのハードカバーが目立つ。その多数の厚い本を読む人物は、今はこの部室にいない。 あの日起こった、不幸な心のすれ違い。ハルヒは忘れられない。自分が突き飛ばしたせいで、負傷して血を流す彼女の姿を。そして、その彼女を置き去りにして、逃げるようにその場を立ち去った自分の行動を。 彼女はいつも通りの無表情だった。自分はどんな顔をしていたのだろうか。 ハルヒは、自らの行動を悔いていた。そして、だからこそ、彼女に合わせる顔がないと思っていた。だから、翌日彼女が事情により学校に来ていないと聞いて、少し安堵した。時間が稼げたから。 しかしそれは間違いだった。時間が経つほど、考える時間が増えるほど、自らの行動が重くのしかかる。ますます彼女に会いにくくなる。考えれば考えるほど、会い辛い。 最近、部室での会話で、彼女について触れられることが多くなっていた。いくらハルヒが話題を変えても、いつの間にか話題は彼女のことに移っていた。特に、昨日の朝比奈みくるの発言は、決定的だった。 「はい、涼宮さん、お茶です。はい、長門さん……っと、長門さんはおらへんかった……うっかり用意してしもた~」 【はい、涼宮さん、お茶です。はい、長門さん……っと、長門さんはいないんだった……うっかり用意しちゃった~】 お茶を出し終えると、みくるはぽつりとハルヒに言った。 「あたし、みんなにお茶を淹れてるから分かるんですけど、一人おらへんだけで、すごく違和感ありますね……」 【あたし、みんなにお茶を淹れてるから分かるんですけど、一人いないだけで、すごく違和感ありますね……】 ハルヒは、自分の眉がつり上がるのを自覚した。 「なぁに、みくるちゃん? 何が言いたいん?」 【なぁに、みくるちゃん? 何が言いたいの?】 「ひっ!? い、いえ、ただ、寂しいなーって……」 それきり、ハルヒは黙りこくったので、みくるも自分の席に着いて、編み物を始めた。 窓辺の指定席は、今は無人。パイプ椅子は、畳んで立て掛けられている。いるべき人がいない風景。それはとても違和感がある風景だった。 ハルヒは知らない。ハルヒの力のせいで彼女が消滅したことを。彼女を取り戻すために、彼らが様々な工作を行っていることを。 彼らの工作は、じわじわとハルヒに効き始めていた。 「わたし達の工作は、どうやら効果を示しているようですね。」 喜緑江美里が口を開いた。 空間封鎖された生徒会室。ここは今、『長門有希消失緊急対策本部』となっている。 「僕らは部室での会話で、それとなく、しかし確実に、長門さんの話題に触れ続けとります。」 【僕らは部室での会話で、それとなく、しかし確実に、長門さんの話題に触れ続けています。】 古泉一樹が言った。彼は部室の会話で、長門有希の話題に誘導する役を務めている。 「俺は、どうも長門についてはハルヒにマークされてるみたいやから、あからさまにはできひんけど、みんなの話題には参加するようにしとぉ。あとは、そうやな……」 【俺は、どうも長門についてはハルヒにマークされてるみたいだから、あからさまにはできないけど、みんなの話題には参加するようにしてる。あとは、そうだな……】 「あんさんは、無意識に長門さんを視線で探してますから、それで十分でっせ。」 【あなたは、無意識に長門さんを視線で探していますから、それで十分ですよ。】 「……俺は、そんなつもりはないんやけどな。」 【……俺は、そんなつもりはないんだがな。】 キョンは一樹を睨む。 「おっと、これはこれは。その反応だけで十分ですわな、状況証拠は。」 【おっと、これはこれは。その反応だけで十分ですね、状況証拠は。】 一樹はいつもの如才ないスマイルで応じた。 「あたしは、昨日ちょっと積極的に頑張ってみました!」 「朝比奈さん、あれはGood Jobでしたよ。」 みくるの行動を賞賛するキョン。 「ええ、まったく。昨日のあなたの言動は、相当効いたようです。MVPは間違いなくあなたですね。」 江美里も同意する。 「昨日のあなたの言動がきっかけになって、今、涼宮さんは『寂しい』という状態になっています。」 それがどんな感情なのか、わたしは実感できないんですけどね、と江美里は付け加える。 「もう一押し……ってわけね。」 朝倉涼子は思案顔で呟く。 「今日早めに活動を切り上げた涼宮さんは、今は部室で独り、物思いに耽っています。」 江美里は、涼子に向かって言った。 「さて。お膳立ては整いました。あとは長門さんの代理……あなたの仕事ですね。」 「そう……やね。そろそろ……行けるかな?」 【そう……よね。そろそろ……行けるかな?】 「『機は熟した』と思いますわ。『鉄は熱いうちに打て』っちゅう言葉もありまっせ。」 【『機は熟した』と思いますね。『鉄は熱いうちに打て』という言葉もありますよ。】 一樹も賛同する。 「うん、そうやね。ほな、ちょっと行ってくるわ。」 【うん、そうよね。じゃあ、ちょっと行ってくるわ。】 涼子は、部室へと向かった。 部室の本棚の本を手に取るハルヒ。そのまま窓辺に行くと、立て掛けてあるパイプ椅子を広げて座った。あの日から学校に来なくなってしまった彼女のように、無言で窓辺に座るハルヒ。そうすることで、彼女を追想するように。 思い出す、彼女と過ごした日々。 最初は、まるで部室の付属物のように存在感のない娘だった。 それが、共に過ごすうち、だんだん彼女を見る目が変わっていく。彼女は万能だった。何でもそつなくこなせた。 決定的だったのは、一年生時の文化祭。 メンバーの病気や怪我で出演ができなくなった、先輩女子のバンド。見かねたハルヒは、彼女を誘って急遽メンバー入りし、舞台に立った。そこで彼女は、驚くべきギターの腕前を披露した。ハルヒの歌声とともに、彼女の情熱的なギタープレイは、その場にいた誰もを魅了した。それは、他ならぬ、共に舞台に立ったハルヒ達も同様に。 体育祭では、ハルヒに負けず劣らずの素晴らしい身体能力を見せつけた。特にアンカーを務めたクラス対抗リレーでは、最下位でバトンを受け取ると、表情を変えずに見る見る走者を追い抜き、ハルヒがアンカーを務める1年5組に次ぐ、二位にまで持ち込んだ。無表情ながら鉢巻きをたなびかせて疾走し、見る見る順位を上げていく小柄な体操服姿に、彼女の隠れファンが急増した。 バレンタインデーの時は、料理の腕前も見事だった。徹夜で賑やかにチョコレートケーキを作る、ハルヒとみくる。彼女はそんな二人を静かに、そしてこれ以上ないほど的確にサポートした。何と彼女は、温度計もなしに、チョコレートのテンパリング(温度調節)をやってのけた。さらには、まかない料理も作ってくれた。チョコレートケーキ製作中は、匂いが移ったり味が分からなくなったりしないよう、薄味の惣菜と、ほかほかご飯に吸い物。プレゼントを山に埋めて帰ってきたら、胃腸に負担を掛けずに冷えた身体を温める、手作り出汁の香り高いうどん。 阪中家での『陽猫病』事件では、その博識ぶりで、見事に事件を解決した。いつも大量に本を読んでいるが、それが実際に役に立つのだから大したものだとハルヒは思った。彼女は阪中家の恩人として盛大な歓待を受け、ハルヒはそれを我がことのように喜んだ。 共に過ごした一年の間に、ハルヒは彼女を『SOS団随一の万能選手』と捉えるようになっていた。 そんな二人の関係に転機が訪れる。先日の、ハルヒの捕り物劇に端を発する、一連の騒動。 ハルヒは精神的に追い詰められていた。そんなハルヒを救ったのが、彼女だった。彼女は、ハルヒの行動の意図を理解し、危険を冒してハルヒに会いに来てくれた。苦しさに押し潰されそうだったハルヒの慟哭を受け止め、優しくそばに寄り添ってくれた。 一緒に帰るために『男装』を提案するなど、意外な一面も見せてくれた。彼女の部屋に招待し、泊まって行くことを勧めるなど、積極的な面も持っていた。そしてその夜、二人は結ばれた。性別の垣根を越えて、肉体的にも精神的にも、二人は繋がった。 次の日には、彼女を通じて彼女の友人に問題を解決してもらった。彼女の人脈には驚かされた。その日はそのままデートにも行った。朝の目覚めの時と同様、彼女の素顔、生の言動に心を揺さぶられた。 彼女と朝倉涼子のそっくりさんに遭遇したこともあった。 その時は彼女も一緒にいた。彼女のそっくりさんは、彼女とは性格が全く違っていた。声も違っていた。しかし、実は彼女もそっくりさんも、お互いの声を真似ることができた。彼女がそっくりさんの声を、いつもの無表情で真似したときは、正直、絶句した。あまりにもシュールでユニークだったから。 彼女との思い出は、どれも大切な、掛け替えのないもの。記憶の中の彼女は、大半が無口で無表情だったが、それでも輝いていた。 そして、つい先日の、あの出来事。 彼女に、自分の恥ずかしい物を目撃されてしまった事件。ハルヒは激しく動揺し、とんでもないことをしでかした。しかし、そのことで実感したこともあった。ハルヒは彼女を…… ハルヒは、知らず、涙を流していた。自分の中で、こんなにも彼女の存在が大きくなっていたのか。 「会いたい……会いたいよぅ……何で、あんなことになってしもたん……有希……早(はよ)……会いたい……謝りたい……何で、謝らしてもくれへんの……? 何で、何で……」 【会いたい……会いたいよぅ……何で、あんなことになってしまったの……有希……早く……会いたい……謝りたい……何で、謝らしてもくれなにの……? 何で、何で……】 言葉にならない思い。言語化できなかった分は、涙と嗚咽になって溢れ出す。 「ゆ、ゆき、有希……有希ぃ――――! うわあああぁぁぁ……!!」 以前にも声を上げて泣いたことがある。その時は彼女が、優しくハルヒの頭を抱いて、ハルヒの慟哭を受け止めてくれた。 でも今は――誰もいない。 「悩み事?」 その時、声が掛けられた。 「うっ、ぐすっ……朝倉?」 涙を拭いながら、部室の入り口を見るハルヒ。 「何よ、人が泣いてんのが、そんなにおかしい? 悪趣味やな。用がないんやったら放(ほ)っといてくれる?」 【何よ、人が泣いてんのが、そんなにおかしい? 悪趣味ね。用がないんだったら放(ほ)っといてくれる?】 涼子は、部室に入ると、扉を閉めた。 「ご挨拶やなあ。わたしは、女の子が泣いてるのが放(ほ)っとかれへんかっただけ。」 【ご挨拶だなあ。わたしは、女の子が泣いてるのが放(ほ)っとけなかっただけ。】 ゆっくりとハルヒに近付く涼子。 「何? 慰めの言葉やったら、要らへんで。」 【何? 慰めの言葉だったら、要らないわ。】 涼子を睨み付けるハルヒ。しかし涙に濡れたその目は真っ赤に充血しているので、迫力に欠ける。 「慰め違(ちゃ)うけど、何て言うのかな……うん、独り言!」 【慰めじゃないけど、何て言うのかな……うん、独り言!】 涼子は微笑を湛えたままで言う。 「そこまで涼宮さんに思われる長門さんも幸せやね。」 【そこまで涼宮さんに思われる長門さんも幸せよね。】 「…………」 「……大丈夫。あなたが願えば、きっとすぐに会える。」 「……根拠は?」 「な~んにも。」 ハルヒは大きく溜め息をついた。 「何よ、それ……」 「言(ゆ)うたやん? 独り言って。」 【言ったじゃない? 独り言って。】 涼子は、指を組みながら言った。 「でも、わたしは、『信じる』ことって、結構重要やと思うな。成功のイメージを信じて行動すれば、上手くいく時があると思わへん? 逆に、悪い方にばっかり考えが行く時って、何やっても上手くいかへん時もあるし。悪い方に考えて気持ちが沈んで、結局上手くいかへんのと、良い方に考えて気持ちが盛り上がって、結局上手くいくのとやったら、わたしやったら、上手くいく方を選ぶな。」 【でも、わたしは、『信じる』ことって、結構重要だと思うな。成功のイメージを信じて行動すれば、上手くいく時があると思わない? 逆に、悪い方にばっかり考えが行く時って、何やっても上手くいかない時もあるし。悪い方に考えて気持ちが沈んで、結局上手くいかないのと、良い方に考えて気持ちが盛り上がって、結局上手くいくのとだったら、わたしだったら、上手くいく方を選ぶな。】 「『信じる』……」 「長門さんとまた会えることを信じればええん違(ちゃ)うかな。きっと長門さんも、涼宮さんに会いたがってると思うわ。」 【長門さんとまた会えることを信じれば良いんじゃないかな。きっと長門さんも、涼宮さんに会いたがってると思うわ。】 涼子は言葉巧みにハルヒを誘導していく。涼子は優秀だった。 「結局、朝倉は、どうするつもりなんやろな?」 【結局、朝倉は、どうするつもりなんだろうな?】 キョンが口を開いた。緊急対策本部では会議が続いていた。 「人間の『感情』というものは、わたしにはよく分からないので、何とも言えませんが。」 江美里は答えた。 「その、朝倉さんって、喜緑さんや長門さんと同じ、その……『端末』、なんですよね。」 みくるは言った。 「ということは、こんな言い方は失礼やと思うんですけど……みんな、人間の『感情』はよう分からへんのですよね?」 【ということは、こんな言い方は失礼だと思うんですけど……みんな、人間の『感情』はよく分からないんですよね?】 「その質問の答えは、」 江美里が答える。みくるが息を呑む。 「禁則事項です。」 盛大に椅子からずり落ちるみくる。 「というのは冗談ですが、基本的にそう考えていただいて差し支えありません。」 (TFEI端末って、実は意外と冗談好きなんか……!?) 《TFEI端末って、実は意外と冗談好きなのか……!?》 と、キョンは思った。 「ただし、例外もあります。例えば長門さんについては、キョンくんはよくご存知ですよね?」 「え? あ、ああ……長門は、顔には出さへんけど表情に表れへんだけで、無感情なんやなくて実はかなり感情豊かです。長く一緒におったら、だんだん分かるようになってきました。」 【え? あ、ああ……長門は、顔には出さないけど表情に表れないだけで、無感情なんじゃなくて実はかなり感情豊かです。長く一緒にいたら、だんだん分かるようになってきました。】 そうですね、と江美里は続ける。 「そして長門さんは、様々な体験をして、暴走したこともありました。そう、あの冬の世界改変事件です。と言っても、お二人さんには、実感はないでしょうけれど。」 江美里はSOS団員達を見回して続ける。 「暴走の原因は、現在も検証中なのではっきりとしたことは言えませんが、長門さんに、人間で言うところの『感情』に相当するものが発生したのが一因ではないか、というのが大勢の見解です。」 「ははあ。すると、あれでっか。長門さんは、感情が生まれ、育っていったものの、本質的には理解でけへんもんやから、だんだんとその感情を『持て余した』っちゅうわけでっか。」 【ははあ。すると、こういうことですか。長門さんは、感情が生まれ、育っていったものの、本質的には理解でないものだから、だんだんとその感情を『持て余した』、と。】 一樹がしたり顔で解説する。 「『感情』がどのようなもので、それがどのように作用したかについては見解が分かれていますが、とにかく、『感情』のようなものが関係しているのではないか、という点では概ね一致しています。」 江美里は、これは私見ですが、と前置きして続けた。 「同様に、朝倉涼子が独断専行し、キョンくんを殺害しようとした件も、やはり『感情』が何か関係しているのではないかと、わたしは考えています。」 「そういえば、朝倉はあの時、何も変化せぇへん観察対象に飽き飽きしてるって言(ゆ)うてたな……」 【そういえば、朝倉はあの時、何も変化しない観察対象に飽き飽きしてるって言ってたな……】 キョンは、当時を思い出しながら言った。朝倉涼子本人の謝罪を受けたことで、多少は『彼』の精神的外傷も緩和されたものと思われる。少なくとも、冷静に当時を振り返ることができるくらいには回復していた。 「本来わたし達は、『飽きる』ということはありません。そのようには作られていないのです。飽きてしまうようでは、観測ができませんからね。でも、朝倉涼子は、観測に飽きた。そして、独断であのような凶行に及んだ。暴走としか言いようがありません。『未熟な感情の暴走』。これが、二人が起こした事件を定義する言葉ではないかと考えています。」 「えっと、それじゃ……今の朝倉さんは、未熟ながらも感情を持っている、ってことですか?」 みくるが問う。 「それが本当に『感情』かどうかは分かりませんが、少なくともわたしよりは、朝倉涼子の方がよく人間の感情を理解して、より適した行動を取れると思います。」 「でも、それじゃ、その、また感情に流されて……」 恐る恐るみくるは問うた。江美里が答える。 「朝倉涼子は、人間で言えば二度死にました。そして二度生き返りました。『感情』を持つ『生命体』が、『臨死』又は『転生』を経験した。それが思考や行動に大きな影響を与えるだろうことは、想像に難くありません。これまでの彼女の言動から推察するに、もう以前のように暴走する可能性はないと言えるでしょう。」 「随分、朝倉を信用してるんですね。」 キョンの問い掛けに、江美里はやや思案するような表情で答えた。 「信用……ですか。」 江美里は窓があると思しき辺りに視線を巡らせながら言った。 「我々端末同士の関係は、人間のそれとは少し違いますが、そうですね。人間の関係に例えて言うなら、確かに『信用』という言葉が近いかもしれません。」 江美里はキョンに視線を戻して続けた。 「キョンくん。あなたは、長門さんを『信用』していますか?」 「もちろんです。全幅の信頼を寄せてると断言できます。はっきり言って、俺は自分よりも長門の方を信用してるかもしれません。」 キョンは即答した。 「それなら、今の朝倉さんも信用してもらえませんか? もちろん、そう簡単には考え方を変えられるものではないということは、情報としては知っています。でも……」 江美里は、ふっ、と表情を緩ませて言った。 「何と言っても、今の朝倉さんは、その長門さんのバックアップ、代理なんです。彼女が長門さんの代わりを務められるのは、単に能力が同程度だからというだけではなくて、あなた達と関係が深くて、かつ、あなた達の行動を同程度には理解しているからなんですよ。今の彼女は……長門さんそのものだと思ってもらって差し支えありません。もちろん、元々の性格付けの設定が違うので、例えば無言で本を読んでいる朝倉さん、という姿を見ることはないでしょうが、『涼宮ハルヒとその周囲の観測及び保全』という任務に関しては、長門さんと全く同じ行動原理に制御されています。」 「せやから、彼女を信用せぇ、っちゅうことを言いたいわけでっか。」 【だから、彼女を信用しろ、と仰りたいわけですか。】 一樹が口を挟む。 「信用しろ、とはおこがましくて、とても言えません。わたしに言えるのは……」 ここで江美里は立ち上がった。 「どうか、彼女を、朝倉涼子を信じてやってください。お願いします。」 こう言って江美里は、深く頭を下げた。 「えっ、わっ、わっ、そ、そんな、頭を上げてください! あ、あたしが変なこと言(ゆ)うてしもたから……」 【えっ、わっ、わっ、そ、そんな、頭を上げてください! あ、あたしが変なこと言っちゃったから……】 みくるが慌てて立ち上がり、江美里に声を掛ける。 「……朝倉は、長門が元に戻れば自分が用無しになるって分かってて、それでも長門のために動くって言いました。」 キョンは江美里をしっかりと見つめていた。 「俺らを守るって言(ゆ)うた長門の言葉を信じるように、俺は朝倉の言葉も信じようと思います。」 【俺らを守るって言った長門の言葉を信じるように、俺は朝倉の言葉も信じようと思います。】 「……ありがとうございます。」 江美里は、柔らかい表情で謝辞を述べた。 彼らが様々な工作を行う一方で、彼らの意思とは関係ない部分でも世界は動いていた。長門有希が消失したことで、涼宮ハルヒの周辺を取り巻く勢力の版図が変化していた。 その中の一つ、情報統合思念体の内部でも、大きな変動が起きていた。かつてキョンを殺害しようとした急進派からは、更に先鋭化した『過激派』が派生していた。 過激派とは、観測対象である涼宮ハルヒ自身に直接刺激を与え、その反応を観測しようとする集団。早い話が、涼宮ハルヒに危害を加えようとする一派のこと。急進派は、その勢力を大きく減じていた。 攻撃か、静観か。派閥内の者には、二者択一が迫られた。朝倉涼子は、長門有希のバックアップを務める事で、自動的に主流派に取り込まれることとなった。 かつての同志が敵となり、かつての仇敵が友軍となる。情報統合思念体の内部は、今や群雄割拠の相を呈していた。 そんな過激派の一部が、長門有希不在を好機と見て、涼宮ハルヒへの攻撃を企図していた。 情報統合思念体内部の意思は不統一。彼らの行動を止める者は誰もいなかった。 彼らの手が涼宮ハルヒ達に近付いていた。 『その時』が迫っていた。 ←Report.13|目次|Report.15→
https://w.atwiki.jp/haruhi_vip/pages/1249.html
Report.13 長門有希の憂鬱 その2 ~朝倉涼子の交渉~ 午後の授業を見学しながら、朝倉涼子は喜緑江美里と遠隔通信で今後の対応を協議した。 喜緑『まずは、古泉一樹と朝比奈みくるに説明して、協力を求めるという方針で、問題ないと思います。』 朝倉『わたしはしばらく謹慎中で、人間社会から離れていたから、勝手が分からないの。そう言ってもらえると助かるわ。』 喜緑『彼らは我々に協力的ではないものの、涼宮ハルヒが関係することとなれば、利害が一致します。ひいては彼らの利益にもなることを納得させられれば、彼らも協力を惜しまないと思います。』 朝倉『そうね。朝比奈みくる……「未来人」勢力は禁則事項と既定事項に縛られてるから、どう動くかはちょっと分からないけど、少なくとも古泉一樹……「機関」の協力は得たいところね。長門さんの観測データによれば、彼は「人間の常識の範囲内への収束担当」といった役回りらしいし。』 喜緑『そうですね。彼ら「機関」の手の者は、わたしが今所属する生徒会を含めて既に多数、この北高内に潜入しています。彼らは元々、彼らが「閉鎖空間」と呼ぶ異空間内部で、同じく《神人》と呼んでいる涼宮ハルヒの「力」を狩り、閉鎖空間拡大を防止する目的で設立されました。でも今は、むしろ閉鎖空間発生の予防に重点を置いているようで、彼女に暇つぶしのネタを提供するなど、能動的に行動しているようです。』 朝倉『そんな活動の一環として、涼宮ハルヒ関連事件の後始末を担当してるってわけよね。』 喜緑『それが機関の総意なのか、古泉一樹個人の素質によるものかは分かりませんけどね。』 朝倉『いずれにせよ、彼の協力が得られれば、事前準備、進行、事後処理と、非常にやりやすくなるのは確かね。』 喜緑『我々の情報操作では、涼宮ハルヒに気付かれる恐れが払拭し切れませんからね。長門さんも、彼の事後処理に期待して、活動を行っていた節もありますし。』 朝倉『やっぱり「操作」という面では、超能力以外は彼女と同じ「この時代の同じ人間」という事実は、大きな優位性だわ。』 喜緑『朝比奈みくるについては、どうします?』 朝倉『彼女は、もう完全にSOS団の「癒し」担当ってとこかしら?』 喜緑『そうですね。様々な意味で、SOS団の「癒し」を司っているみたいですね。』 朝倉『長門さんのログによると、長門さんでさえも、彼女に「癒されて」いるみたいだけど、この件については、あなたの方が詳しいかしら。』 喜緑『いやー、あの場面はすごかったですね。その場面の映像を送りますね。』 ――涼子の記憶領域内に、ある映像が展開される。 朝倉『……わーお♪』 喜緑『長門さんにも言いましたが、例えるなら「天使と天女が仲良く眠る図」といった光景でした。』 朝倉『長門さん、こんな顔して眠るんだ……』 喜緑『可愛いと思いませんか? こう、「庇護欲」をくすぐるというか。』 朝倉『……喜緑さん、あなた随分「人間的」な台詞を言うようになったのね。』 喜緑『有機生命体として人間社会で生活していると、やはり色々と影響を受けて変わっていくものなんですよ。』 これが謹慎中の自分と、ずっと人間社会で生活していた者との差なのかと、涼子は思った。有機生命体には、時間の経過が極めて重要な意味を持つ。 喜緑『もはや朝比奈みくるも、涼宮ハルヒの中で大きな領域を占めています。彼女を除いた形での涼宮ハルヒへの介入方法は、検討する価値もないですね。』 朝倉『彼女を突破口とするってことね。』 喜緑『それが今の涼宮ハルヒに対しては一番無難な導入かと思います。』 朝倉『わたしが表立って動くと目立つから、彼らへの交渉はお願いしちゃって良いかな?』 喜緑『ええ、良いですよ。』 朝倉『あ、でも、キョンくんへは、やっぱりわたしからちゃんと話した方が良いかな?』 喜緑『んー、どうでしょう。「彼」にとってあなたは、完全に精神的外傷になってますからねえ。「彼」の中では、あなたは完全に「殺人鬼」朝倉涼子です。』 朝倉『…………』 涼子は沈黙した。ややあって、 朝倉『……イヤ。やっぱりそのままじゃイヤ。わたし、キョンくんときちんとお話したい!』 喜緑『「彼」は十中八九、拒絶すると思いますけどね。』 朝倉『それでも、イヤなの。「彼」に「殺人鬼」と思われたままでいるのは。』 涼子も変わったと、江美里は思った。そもそも、彼女がキョンを殺害しようとした原因の一端は、未熟ながら『感情』が宿りつつあったからなのではないかと思料された。 未熟な『感情』の暴走。 その結果、朝倉涼子はキョンを殺害しようとして、長門有希に消された。そして長門有希は後日、感情の暴走により世界を改変、情報統合思念体をも消去した。これは異時間同位体の長門有希自身と、キョン、朝比奈みくる及びその二人の異時間同位体によって修正された。 喜緑『あなたがどうしてもそうしたいなら、止めはしませんよ。支援できるかは保証できませんけど。』 朝倉『うん、これはわたしの問題。できる限りのことをやってみるわ。ただ、二人きりで話すのはさすがに無理だと思うから……』 喜緑『でしょうね。わたしも同席しましょう。それから、彼らにも同席してもらえば良いのでは?』 話はまとまった。 一樹とみくるには、昼休みに江美里が持ち回りで説明して同意を得ることとなった。やはり江美里が睨んだ通り、状況を説明すると、彼らはすぐに同意した。 『僕は一度だけ『機関』を裏切ってでも、SOS団の味方をすると約束した身ですからな。それに今回は、「機関」としても、長門さんの消失を重く見ているようですわ。』 【僕は一度だけ『機関』を裏切ってでも、SOS団の味方をすると約束した身ですからね。それに今回は、「機関」としても、長門さんの消失を重く見ているようですよ。】 『あたし、どれだけお役に立てるか分かりませんけど、長門さんのために頑張ります!』 部活後、キョン、みくる、一樹の三人で、ハルヒのクラスの教室へ行くことになった。 部活後。教室に向かう三人。キョンには一樹が、 『喜緑江美里さんが、部活後、僕達に話があるそうですわ。』 【喜緑江美里さんが、部活後、僕達に話があるそうです。】 と説明した。 教室前では江美里が待っていた。 「さあ、中にどうぞ。」 江美里が、教室への入室を促す。みくる、キョン、古泉、江美里の順に教室に入ろうとする。 しかしキョンは、教室内に彼女の姿を認めると、硬直した。『彼』はかすれた声で、搾り出すように言った。 「何で、お前が、ここに、いる……!」 夕日に照らされ、オレンジ色に染まる教室。その中に、同じくオレンジ色に染まった朝倉涼子が佇んでいた。 「遅いわ。」 【遅いよ。】 いつかのように、同じ台詞を言う彼女。キョンは、硬直したまま、脂汗をかいている。 「ほら、キョンくん。中、入ろ?」 みくるが入室を促すが、キョンは微動だにしない。 「……こら、相当なトラウマになっとるみたいですなあ。」 【……これは、相当なトラウマになってるみたいですね。】 一樹は苦笑する。 「今日は、僕らも一緒やさかい、大丈夫でっしゃろ。ねえ、喜緑さん?」 【今日は、僕らも一緒ですから、大丈夫でしょう。ねえ、喜緑さん?】 「以前の彼女は、様々な複合要因から、あなたを殺害しようとしました。でも今は、そのような命令も受けていませんし、その気もありません。彼女は今、あなたに危害を加える存在ではありません。わたしが保証します。」 「そ、そんなもん!」 キョンは叫んだ。 「そんなもん、だ、誰が信じられるかっ!? 言わしてもらうけどなぁ! 俺は、こいつに……二度も! 一度ならず二度までも、殺されそうになったんやぞ!? あれは本気の殺意やった! それを今更『危害を加えない』なんて言われて、ほいほい信じられると思うか!? そんな奴おったら、今すぐ連れて来い! 代わったるから!」 【そんなもん、だ、誰が信じられるかっ!? 言わしてもらうがなぁ! 俺は、こいつに……二度も! 一度ならず二度までも、殺されそうになったんだぞ!? あれは本気の殺意だった! それを今更『危害を加えない』なんて言われて、ほいほい信じられると思うか!? そんな奴いたら、今すぐ連れて来い! 代わってやるから!】 キョンは半狂乱になりながら叫んでいる。同じ人物に二度も、むき出しの殺意を向けられ、二度目は実際に刃物で刺され、死亡寸前にまで追い込まれたとあって、彼の拒絶反応は凄まじかった。涼子はある程度予想はしていたものの、想定以上の絶対的な拒絶だった。 「こんな状態じゃ、落ち着いて話も聞いてもらわれへんか。」 【こんな状態じゃ、落ち着いて話も聞いてもらえないか。】 涼子は溜め息を一つつくと、寂しそうな声で言った。そして、ゆっくりと入り口近くにいる彼らの方へ近付いていった。 「こら、やめろ、近付くな! それ以上近づいたら大声出すぞ! って、おい、古泉、なんの真似や! 朝比奈さんまで! ちょっとどいて喜緑さん! そいつに殺される!」 【こら、やめろ、近付くな! それ以上近づいたら大声出すぞ! って、おい、古泉、なんの真似だ! 朝比奈さんまで! ちょっとどいて喜緑さん! そいつに殺される!】 逃げようとするキョンを、三人が取り押さえている。涼子は、彼らのすぐそばまで来た。 「くぁwせdrftgyふじおklp;!?」 もはやキョンは何を言っているのかすらわからない。混乱の極致。 「……やっぱり、信じてもらうんは無理やろうね……」 【……やっぱり、信じてもらうのは無理でしょうね……】 ぽつりと呟く涼子。心底寂しそうな表情で。 「それでも……それでもわたしは……」 大粒の涙を流し始める涼子。 「そ、そんな『女の涙』なんかに騙されへんぞ!?」 【そ、そんな『女の涙』なんかに騙されないぞ!?】 言いながらもキョンは、動揺を隠せない。 「わ、わたしのことなんか、ぐすっ、信じてくれへんでも良い、ひっく。でも、話だけでも、うっ、聞いて……わたしがやったことは、謝るから! どうか、話! 落ち着いて聞いて! これは……長門さんのためやの!!」 【わ、わたしのことなんか、ぐすっ、信じてくれなくても良い、ひっく。でも、話だけでも、うっ、聞いて……わたしがやったことは、謝るから! どうか、話! 落ち着いて聞いて! これは……長門さんのためなの!!】 ぴたり、とキョンの動きが止まった。 「長門のためやと!?」 【長門のためだと!?】 泣きながら、涼子は土下座した。 「あなたを、二回も殺そうとして、ごめんなさい! これはどんな言い訳もできません! 許してもらおうとも、許してもらえるとも、思ってません!」 驚き戸惑うキョン。 「わたしのことはどうでも良い! でも、これだけは聞いて!!」 涼子は、涙と鼻水でぐちゃぐちゃになった顔を上げて、言った。 「長門さんを助けて!!」 「や、やめてくれ。お前の気持ちは分かった。土下座なんかやめてくれ。」 キョンは涼子に言った。 「とにかく、話は聞くから。な?」 まだ泣き止まないながらも、涼子はのそのそと立ち上がった。 「ひっく、うっ……ごめんなさい、取り乱して……ひっく。」 「まず、これだけは確認させてくれ。お前はほんまに、俺に危害は加えへんのやな?」 【まず、これだけは確認させてくれ。お前はほんとに、俺に危害は加えないんだな?】 涼子に問い掛けるキョン。 「ぐすっ、は、ひっく、はい……」 「わたしからも補足しますと、朝倉涼子は以前とは役割が違います。以前、あなたを殺害しようとした、あの『インターフェイス』とは形が同じなだけで、中身は別物と考えて差し支えありません。」 と、江美里が補足した。 「それで、さっき『長門さんのため』って言(ゆ)うたな。で、『長門さんを助けて』とも。」 【それで、さっき『長門さんのため』って言ったな。で、『長門さんを助けて』とも。】 涼子は、一樹が差し出したハンカチで涙を拭いながら言った。 「はい……話、聞いてくれる?」 「ああ。」 「やっぱりキョンくんは……長門さんのこととなると、信じてくれるんやね。」 【やっぱりキョンくんは……長門さんのこととなると、信じてくれるのね。】 「俺にとってあいつは、命の恩人でもあるしな。」 「…………」 寂しげな表情で視線を落とし、沈黙する涼子。 「大体やな。」 【大体だな。】 キョンは続ける。 「俺は聖人でも君子でもないけど、いくら命を狙われたとはいえ、土下座までして謝罪するような奴に辛く当たるほど、冷たい人間違(ちゃ)うつもりや。」 【俺は聖人でも君子でもないけど、いくら命を狙われたとはいえ、土下座までして謝罪するような奴に辛く当たるほど、冷たい人間じゃないつもりだ。】 涼子はハッと視線を上げた。潤んだ瞳でキョンを見つめる格好となった。 「許して……くれるの?」 「正直、複雑な気分や。でも、冷静に話を聞くくらいはできるようになったと思う。」 【正直、複雑な気分だ。でも、冷静に話を聞くくらいはできるようになったと思う。】 「……ありがとう……」 「それで、一体何がどうなってるんか、順を追って詳しく説明してくれるか。」 【それで、一体何がどうなってるのか、順を追って詳しく説明してくれるか。】 まずは江美里が説明を始める。 「単刀直入に言います。長門有希が消失しました。」 目を見開き驚くキョン。江美里は続けた。 「事の発端は、あの日。朝比奈さん、あなたも知っている『あの行為』を涼宮さんが長門さんに見られた日のことです。」 「ひっ!?」 突然名指しされたみくるは身体を強張らせる。キョンと一樹の視線がみくるに向けられる。 「その日の部活は、微妙に張り詰めた空気だったと思います。でも原因はそれではありません。その日の部活後の出来事です。」 そして江美里は、その後の経過を説明した。皆が帰った後の部室での、ちょっとした心のすれ違いが原因で起こったこと。それによってハルヒが非常に動揺したこと。 「その夜、涼宮さんはこう思ったんでしょうね。『有希に会いたくない』と。」 「ちょ、ちょっと待ってくれ。そしたら、何か? ハルヒはちょっと恥ずかしいことがあって、長門に会いたくないって思ったからって、長門の存在ごと消したって言(ゆ)うんか!?」 【ちょ、ちょっと待ってくれ。それじゃ、何か? ハルヒはちょっと恥ずかしいことがあって、長門に会いたくないって思ったからって、長門の存在ごと消したって言うのか!?】 キョンが声を荒げる。 「そんな……そんな身勝手が許されるんか!?」 【そんな……そんな身勝手が許されるのか!?】 「あんまり涼宮さんを責めんといたって。」 【あんまり涼宮さんを責めないであげて。】 涼子が諌める。 「涼宮さんだって、自覚してへんから、自分の力を完全には制御できてへんの。これは無意識下で起こった現象。悪気があったわけ違(ちゃ)うの。だから、今回の件は、上手くすれば、涼宮さんに『あまり縁起でもないことは考えないようにしよう』って思わせられるかもしれへん。」 【涼宮さんだって、自覚してないから、自分の力を完全には制御できてないの。これは無意識下で起こった現象。悪気があったわけじゃないの。だから、今回の件は、上手くすれば、涼宮さんに『あまり縁起でもないことは考えないようにしよう』って思わせられるかもしれない。】 「……それで?」 不承不承ながら、キョンは先を促す。今度は涼子が説明する。 「情報統合思念体は、長門さんが既に涼宮さんの中で大きな存在になってることを理解した。だから、何とか長門さんを再構成しようとした。でも、それは上手くいかへんかった。」 【情報統合思念体は、長門さんが既に涼宮さんの中で大きな存在になってることを理解した。だから、何とか長門さんを再構成しようとした。でも、それは上手くいかなかった。】 そこに涼宮ハルヒの力が介在したから、と涼子は続ける。 「このままやったらあかんと危機感を持った情報統合思念体は、代わりのインターフェイスを派遣することにした。それがわたし。今のわたしは、長門さんの任務代行者。消えてしもた長門さんの代わりを務めるために再構成された、まさしく『バックアップ』ってわけ。だから今のわたしの存在意義は『涼宮ハルヒの観測と保全』。それにはもちろん、キョンくん達も入っとぉで。つまり今のわたしは、キョンくん達の『守護者』でもある。」 【このままではいけないと危機感を持った情報統合思念体は、代わりのインターフェイスを派遣することにした。それがわたし。今のわたしは、長門さんの任務代行者。消えてしまった長門さんの代わりを務めるために再構成された、まさしく『バックアップ』ってわけ。だから今のわたしの存在意義は『涼宮ハルヒの観測と保全』。それにはもちろん、キョンくん達も入ってるわ。つまり今のわたしは、キョンくん達の『守護者』でもある。】 『守護者』を強調して、涼子は続けた。 「わたしが再構成された理由は、当面は長門さんの代理として、涼宮さんの観測を続けること。でも、いつまでも代理を続けるわけにはいかへんの。わたしはここにおったらあかん存在やから。それに何より、わたしでは、『涼宮さんにとっての長門さん』は務め切れへん。」 【わたしが再構成された理由は、当面は長門さんの代理として、涼宮さんの観測を続けること。でも、いつまでも代理を続けるわけにはいかないの。わたしはここにいてはいけない存在だから。それに何より、わたしでは、『涼宮さんにとっての長門さん』は務め切れない。】 「何(なん)でや?」 【何(なん)でだ?】 と問うキョン。涼子は言葉を選びながら、慎重に答えた。 「今の長門さんは、涼宮さんにとって……とても大切な『お友達』。ある『気持ち』を分かち合える存在。『行為』だけなら、わたしでもできるけど……『心』を通い合わせるのは、たぶん無理。」 「どうも、要領を得(え)ーへんな。何か奥歯に物が挟まったような……具体的にどういうことなんや?」 【どうも、要領を得ないな。何か奥歯に物が挟まったような……具体的にどういうことなんだ?】 「それは、」 涼子は指を組んで言った。 「禁則事項。」 「禁則事項て……」 「お察しください。頑張ってます。」 涼子は咳払いを一つすると、続けた。 「……とにかく、このままやと、涼宮さんの思いに阻まれて、長門さんを元に戻されへんの。彼女、意地っ張りやから……彼女に心から、長門さんに会いたいと思ってもらわなあかんの。」 【……とにかく、このままだと、涼宮さんの思いに阻まれて、長門さんを元に戻せないの。彼女、意地っ張りだから……彼女に心から、長門さんに会いたいと思ってもらわなきゃならないの。】 「それで、長門が戻ってくるためには、俺達の協力が必要なんやな?」 【それで、長門が戻ってくるためには、俺達の協力が必要なんだな?】 「そうです。わたし達長門さんを知る者全員の協力が必要です。」 と江美里が答えた。涼子は続けた。 「涼宮さんに、長門さんとまた会いたいって思わせる、要するに素直にならせる。それが、長門有希の帰還のために必要な条件。そのためには、わたし達が協力して、涼宮さんの思考をそのような方向に誘導せなあかんの。」 【涼宮さんに、長門さんとまた会いたいって思わせる、要するに素直にならせる。それが、長門有希の帰還のために必要な条件。そのためには、わたし達が協力して、涼宮さんの思考をそのような方向に誘導しなきゃならないの。】 「それで、あたし達も呼んだんですね?」 と、みくるが声を上げる。 「そう。長門さんと涼宮さん、どちらとも縁が深いわたし達が、あくまで自然に涼宮さんを誘導せなあかん。」 【そう。長門さんと涼宮さん、どちらとも縁が深いわたし達が、あくまで自然に涼宮さんを誘導しなきゃならない。】 こうして、五人は長門有希再起に向けて協調して行動することを確認。涼子、江美里ら宇宙人勢力を中心に、協力していくことで一致した。 「わたし達五人、所属も立場も違いますが、長門有希の帰還のため、一致団結して行動しましょう!」 「そう言えば……」 キョンが思い付いたように言う。 「俺達が協力して、長門が戻ったら、朝倉。お前はどうなるんや?」 【俺達が協力して、長門が戻ったら、朝倉。お前はどうなるんだ?】 涼子は視線を床に落とすと、寂しそうに言った。 「わたしはあくまで長門さんの『バックアップ』。それに、以前の独断専行の廉(かど)でいわば『謹慎中』の身。この問題が解決されれば、再び情報連結が解除されることになるわ……」 「……お前は、それでええんか?」 【……お前は、それで良いのか?】 「…………」 沈黙。しばらくの後、涼子は口を開いた。 「……わたしには、有機生命体の死の概念は理解できひん。でも、それに近い状態を経験した。」 【……わたしには、有機生命体の死の概念は理解できない。でも、それに近い状態を経験した。】 涼子は顔を上げた。 「今なら分かる。『死ぬ』のはイヤ。」 『中身は別物と思って差し支えありません』 江美里の説明を思い出すキョン。 「でも、だからこそ、長門さんの気持ちが分かる。長門さんも同じ思いをしたはず。せやから、わたしは、何としてでも長門さんを元に戻したい。それに、わたしが再構成されたのも、結局は涼宮さんがわたしのこと思い出してくれたからやし。もし状況が違(ちご)てたら、わたしは再構成されへんかったかもしれへん。今こうやって話をしてること自体、『奇跡』みたいなもんやから。もし涼宮さんが、わたしと一緒にいたいと思ったら、わたしはまたこうやって一緒にいられるかもしれへんけど、どうなるかは……」 【でも、だからこそ、長門さんの気持ちが分かる。長門さんも同じ思いをしたはず。だから、わたしは、何としてでも長門さんを元に戻したい。それに、わたしが再構成されたのも、結局は涼宮さんがわたしのこと思い出してくれたからだし。もし状況が違ってたら、わたしは再構成されなかったかもしれない。今こうやって話をしてること自体、『奇跡』みたいなものだから。もし涼宮さんが、わたしと一緒にいたいと思ったら、わたしはまたこうやって一緒にいられるかもしれないけど、どうなるかは……】 涼子は指を組みながら言った。 「人間の言葉で言うところの、『神のみぞ知る』。」 彼女は今、自分の立場を理解している。用が済めば再び消される存在。それでも彼女は、その任務を果たそうとしている。それが彼女の存在意義。 だが、それだけではない。彼女は、同じ境遇を経験した者として、『自らの意思』でも行動していた。彼女は自らの『運命』を受け入れ、それでも前向きに行動しようとしていた。 「やらなくて後悔するよりも、わたしはやって後悔しようと思う。」 涼子の顔に、迷いはない。 「現状を維持するままではジリ貧になるんやったら、わたしは何でもええから変えてみようと思って行動する。それがわたしの望みやから。」 【現状を維持するままではジリ貧になるんだったら、わたしは何でも良いから変えてみようと思って行動する。それがわたしの望みだから。】 ←Report.12|目次|Report.14→
https://w.atwiki.jp/we_hate_sunshine/pages/58.html
CrystalReportsチップス Last Update 2007/04/25 レコード関連 前のレコードと値を比較したい。 次のレコードと値を比較したい。 詳細がない(データがNULLの)場合、行を詰めたい。 最初のレコードを抽出したい。 最後のレコードを抽出したい。 1レコードごとに改ページしたい。 総レコード数を取得したい。 レコードの順番はどのように決まる? 積算合計やクロス集計などでフィールドを選択できないのはなぜ? RecordNumberをグループ毎にリセットしたい。 1ページに表示するレコード数を指定したい。 レコード毎に画像データを表示したい。 空白行(レコード)を表示したい。 グループ関連 グループの最初のレコードを抽出したい。 グループの最後のレコードを抽出したい。 グループヘッダーを毎ページ表示したい。 グループヘッダーを毎ページ表示したい(グループフッターのみの場合にも表示する) グループごとに改ページしたい。 動的にグループ化のOn/Offを切り替えたい。 グループ内件数を取得する。 日付でグループ化したときの挙動が怪しい。 ページ関連 総ページ数を取得したい。 最初のページ、最後のページを取得したい。 ページヘッダに詳細の一部分を表示したい。 レポートのページサイズを変更したい。 ページごとの合計を取得したい。 1ページに座標指定(任意の位置に)でオブジェクトを配置する。 レポートフッターで改ページしたい。 指定行で改ページしたい。 データソース関連 データソースの置換したい。 フィールドデータの編集 文字列を連結したい。 文字列を分割したい。 文字列を置換したい。 文字列を指定文字数になるまで指定文字で埋めたい。 文字列に変換したい。 数値を文字列に変換するときに小数点以下の桁数を指定したい。 数値を四捨五入したい。 除算した余りを求めたい。 変数に値を代入したい。 フィールド表示形式 小数点以下の桁数を指定したい。 フィールドを非表示にしたい。 テキストの合成について。 文字列を指定位置で改行したい。 テキストフィールドの改行が思い通りにいかない場合。 フィールドを罫線で囲みたい。 線オブジェクトの表示・非表示を動的に切り替えたい。 日付を和暦表示したい。 テキストオブジェクトの改行の仕方。 境界線が消えないようにする。 フィールドのデータがNullかどうかを判断したい。 プログラム側からの制御 総ページ数を取得する。 テキストフィールドの値を取得または変更する。 式フィールドに値を代入する。 式フィールドの式を取得または変更する。 動的にグループ条件を変更する。 動的にグループをOn/Offしたい。 レポートに表示しているデータをプログラム側から変更したい。 サブレポートを取得する。 接続先データベース(データソース)を切り替える(その1)。 接続先データベース(データソース)を切り替える(その2)。 接続先データベース(データソース)を切り替える(その3)。 CrystalReportViewer でレポートの最後のページまで移動しないで最初のページに合計ページ数を表示する方法。 CrystalReportViewerのタブの「メインレポート」という文字を変更したい CrystalReportViewerのツールバーに表示されているロゴをカスタマイズしたい CrystalReportViewerのレポートが表示されている部分のイベントをフックしたい。 画像を指定して表示したい。 印刷に関して プリンタから直接印刷する。 CrystalReportViewerを使って印刷したい。 バーコードを出力したい。 クリスタルレポートの余白をプログラムから設定したい。 外字印刷。 その他 製品版とバンドル版の違い。 VS.NETで実行ファイルにレポートファイル(rptファイル)を埋め込む。 レポートファイルは実行ファイルに埋め込んだ方が良い? Basic構文とCrystal構文の違い。 CrystalReportsのバージョンアップする際、前の環境を残しておきたい。 CrystalReportsを用いたアプリケーションの配布について。 TableModuleとTableDataGateway。 CrystalReportsの関数のヘルプはないの? CrystalReportsで印刷時に文字化けする。 ~ の文字化け。 「このフィールドは集計できません」というエラーの意味。 CrystalReportsをバージョンアップしたら罫線の長さが太くなった。 データベース構造の変更をレポートに反映させたい。 特殊フィールドのレポートタイトルとかレポートコメントって何? CrystalReportViewerのツールチップを抑制する。 用語 WhitePrintingRecords CurrencyVar ドリルダウン 条件付き書式設定 Shared変数 続くセクションをアンダーレイ データプロバイダ レポートファイル 積算合計フィールド 特殊フィールド 式フィールド パラメータフィールド グループ名フィールド SQL 式フィールド License Key 循環フィールド 非循環フィールド Chr(13) Chr(10) ADO.NETのよくあるエラーと解決方法 追加情報 Parameter PARAM1 No size set for variable length data type String. 追加情報 ORA-01400 cannot insert NULL into ( PESON_DB . PESON . ADDRESS ) 追加情報 ORA-01008 not all variables bound 追加情報 ORA-01036 変数の名前/数が無効です。 追加情報 No data exists for the row or column. 追加情報 ORA-00920 invalid relational operator 追加情報 ORA-00923 FROM keyword not found where expected 追加情報 ORA-01008 バインドされていない変数があります。 追加情報 ORA-00936 式がありません。 追加情報 ORA-00918 列の定義が未確定です。 追加情報 ORA-00933 SQL command not properly ended リンク集 クリスタルレポート関連 レコード関連 前のレコードと値を比較したい。 Previous(フィールド)を使えば、フィールドを指定して一つ前のレコードのデータを参照できます。 ただし、最初のレコードなど前のレコードが存在しない場合は評価できないので注意が必要です。 その場合を考慮して、例えばPreviousIsNull(フィールド)と論理積を取る手法が考えられます。 //前のレコードと社員情報が一致しない場合にTrueを返すCrystal構文 WhilePrintingRecords; // 前方 社員情報が存在しない? and 後方 社員情報が一致しない? // しない/false and ×(評価できない) false // する/true and する/false false // する/true and しない/true true (PreviousIsNull({社員情報}) = false) and ({社員情報} Previous({社員情報})); Top 次のレコードと値を比較したい。 Next(フィールド)を使えば、フィールドを指定して一つ前のレコードのデータを参照できます。 ただし、最後のレコードなど次のページが存在しない場合は評価できないので注意が必要です。 その場合を考慮して、例えばNextIsNull(フィールド)と論理積を取る手法が考えらます。 //次のレコードと社員情報が一致しない場合にTrueを返すCrystal構文 WhilePrintingRecords; // 前方 社員情報が存在しない? and 後方 社員情報が一致しない? // しない/false and ×(評価できない) false // する/true and する/false false // する/true and しない/true true (NextIsNull({社員情報}) = false) and ({社員情報} Next({社員情報})); Top 詳細がない(データがNULLの)場合、行を詰めたい。 セクションエキスパートで詳細セクションの「空セクションの非表示」をチェックします。 Top 最初のレコードを抽出したい。 式フィールドまたはは条件付き書式設定でOnFirstRecordを使います。 //最初のレコードのとき変数cntを0で初期化する。 //そうでない場合、cntをインクリメントする。 numberVar cnt; if OnFirstRecord then cnt = 0 else cnt = cnt+1; Top 最後のレコードを抽出したい。 式フィールドまたはは条件付き書式設定でOnLastRecordを使います。 Top 1レコードごとに改ページしたい。 セクションエキスパートで、詳細セクションの「出力後に改ページ」にチェックします。 Top 総レコード数を取得したい。 式フィールドでCount(フィールド)を使います。 フィールドの出現回数を数えることによってレコードの数を取得します。 パラメータを指定すれば、グループ内件数を取得できるなど色々使い道があります。 //WhilePrintingReportsは必要ない Count({個人.名前}) Top レコードの順番はどのように決まる? レコードの順番は選択SQLのOrder By句によって決定されます。 Order By句の決定はレポートデザインでグループ化などによるレコードの並べ替えによって行われます。 したがって、データベースのレコード順ではなく、CrystalReportsのメモリ上にロードされる順番であると言えます。 ただし、Order By句が何も指定されない場合はデータベースの順番で引き出されることになるでしょう。 ちなみに選択SQLの確認は、メニューから「データベース」→「SQLクエリの表示」で行えます。 Top 積算合計やクロス集計などでフィールドを選択できないのはなぜ? レコード選択式には集計フィールドを含めることはできないため、集計フィールドを利用したフィールドは選択項目に現れません。 (この理由については用語の循環フィールド当たりを参照してください。) また、レコード選択式では以下の関数を含めることができません。 PageNumber 、 RecordNumber 、 GroupNumber 、 Previous 、 Next Top RecordNumberをグループ毎にリセットしたい。 RecordNumberは振り直しができません。 そのため、代わりとなる式フィールドを用意します。 次のような式フィールドを用意し、RecordNumberの代わりに使います。 @レコードカウンターのリセット//非表示にしておく。 WhilePrintingRecords; numberVar RecordCounter =0; //詳細に以下の式フィールドを挿入 @レコードカウンター //非表示に・・・せんでもいいのかな。 WhilePrintingRecords; numberVar RecordCounter; RecordCounter = RecordCounter + 1; Top 1ページに表示するレコード数を指定したい。 詳細の改ページ条件に以下の式を挿入します。 ちなみに総レコード数はCount関数で取得できます。 WhilePrintingRecords; numberVar displayCount = 50; // 50件表示 Remainder(RecordNumber,displayCount) = 0 and RecordNumber @総レコード数; Top レコード毎に画像データを表示したい。 画像データがすでにデータベースやデータセットなどのデータソースに収まっているなら話は早いです。 画像データの入っているデータベースフィールドをレポートのデザインにドラッグ&ドロップすれば、BlobFieldObjectが作成されます。 この状態で実行すれば、BlobFieldObjectにレコード毎に画像が現れます。 画像データはフォルダなどに収められていてデータベースに入ってないと場合はOLEオブジェクトを使用します。 OLEオブジェクトのレポートのデザインにドラッグ&ドロップしたら、そのオブジェクトの書式設定を開き、ピクチャタブの保存場所の項目を選択します。 この項目は条件付書式設定が使えるので、そこに画像のURIを指定します。 もし、データ毎に画像を変更したいのなら、ファイルパスを収めたテーブル(データベースでも、データセットでもよい)を用意し、 そのフィールドを保存場所の条件付書式設定で指定すれば良いでしょう。 Top 空白行(レコード)を表示したい。 無理です。 このような要件は大抵固定行で出力したい場合に出てくるのですが、CrystalReportsは空白行を出力する機能を持ち合わせていません。 そこで、次のように擬似的にデザインすることで空白行を作ります。 1. ページヘッダーで表示したい行数分の枠をデザインします。 2. セクションエキスパートを開き、ページヘッダーの設定で「続くセクションをアンダーレイ」を有効にしておきます。 (これで次のセクション(詳細)がマージされますので背景として使うことができます。) 3. 詳細でデータ1行分のデザインを行います。 4. データの表示テストを行い、データがうまく枠に収まるように詳細の幅を調整します。 5. 指定行(レコード)数に達したら改ページするように詳細を設定します。 (「指定行数で改ページしたい。」を参照。) Top グループ関連 グループの最初のレコードを抽出したい。 Previous(フィールド)を用いて、グループで利用しているフィールドの値の変わり目を調べます。 WhilePrintingRecords; {グループで利用しているフィールド}=Previous({グループで利用しているフィールド}) Top グループの最後のレコードを抽出したい。 Next(フィールド)を用いて、グループで利用しているフィールドの値の変わり目を調べます。 WhilePrintingRecords; {グループで利用しているフィールド}=Next({グループで利用しているフィールド}) Top グループヘッダーを毎ページ表示したい。 デザインでグループヘッダーまたはグループフッターを右クリックし、グループの変更オプションから「ページごとにグループヘッダーを出力」にチェックします。 これにより、グループの詳細がページをまたがるときに、次のページの上部にもう一度グループヘッダーを表示することができます。 Top グループヘッダーを毎ページ表示したい(グループフッターのみの場合にも表示する) 通常ページ毎にグループフッターを表示する場合は「ページごとにグループヘッダーを出力」にチェックします。 これによってグループの詳細が次ページにまたがった場合、再度グループヘッダーが表示されます。 しかし、グループフッターのみが次ページにまたがった場合、グループヘッダーは表示されません。 これは仕様です。 これを表示するには以下の手順を取ります。 1.式フィールドでレコードをカウントするフィールドを作り、詳細に置きます。 2.グループフッターを2つ作ります。 3.グループフッターaをグループヘッダーと同じ内容にします。 4.グループフッターbを今まで通りのグループフッターとして追加います(同じ内容にします)。 5.グループフッターaの非表示の条件式に、グループフッターが改ページする件数の時に表示するように設定します。 Top グループごとに改ページしたい。 セクションエキスパートで、グループフッターの「出力後に改ページ」にチェックします。 ただし、これだとレポートフッターが改ページされてしまいます(レポートフッターがない場合も空欄ページができると思います)。 最後のグループフッターでは改ページしないように、上の「出力後に改ページ」の条件付き書式設定で以下のような評価式を指定します。 WhilePrintingRecords; OnLastRecord true; Top 動的にグループ化のOn/Offを切り替えたい。 デザイナ上の設定では不可能です。 式フィールドによるグループ化を使えば動的にOn/Offを切り替えることが可能となります。 WhileReadingRecords; // パラメーターフィールド 入力データ の値が1であるとき、カラムAでグループ化します。それ以外のときはグループ化しません。 If {?入力データ} = 1 Then {テーブル.カラムA} Else Top グループ内件数を取得する。 式フィールドで自前のカウンターを用意するのも一つの手ですが、これではグループフッター以降でないと実際の件数がわかりません。 フッターや詳細で直接件数を取得したい場合は式フィールド+Count()関数を用います。 //@グループ内件数 Count({※1},{※2}); //※1 カウント対象のフィールド名、今回は単にレコードの件数を確認したいのでどのフィールドが対象でもかまわない。 //※2 グループ化するフィールド名 Top 日付でグループ化したときの挙動が怪しい。 日付型のフィールドでグループ化した場合、デフォルトの設定では1週間単位でグループ化するようになっています。 グループの変更オプションを開き、共通タブのセクションの出力項目を、毎週→毎日に変更します。 Top ページ関連 総ページ数を取得したい。 TotalPageCountで総ページ数を取得できます。 Top 最初のページ、最後のページを取得したい。 出力状況関数のPageNumberとTotalPageCountを利用すればできます。 例えば以下の式を利用するとレポートの最初と最後のページで真を返し、それ以外では偽となります。 WhilePrintingRecords; (PageNumber = 1) or (PageNumber = TotalPageCount); Top ページヘッダに詳細の一部分を表示したい。 メインレポートと同様のデータソースでサブレポートを用意し、 サブレポートでその詳細の部分だけを表示するよう(非表示などを利用して)デザインします。 そして、そのサブレポートをメインレポートのページフッタに挿入します。 Top レポートのページサイズを変更したい。 メニュー[ファイル]から[ページ設定]を選び、設定します。 ここで設定される項目はレポートのデザインの一部でです。 従ってあとで外部から変更するこをはできません。 ただし、印刷する際、プリンタ側で用紙や余白を設定することは可能です。 Top ページごとの合計を取得したい。 積算合計フィールドを使う手もありますが、変数を使った方が応用が利きます。 サンプルコード参照してください。 //ページヘッダーに以下の式フィールドを挿入 @合計のリセット//非表示にしておく。 WhilePrintingRecords; numberVar ToltalValue =0; //詳細に以下の式フィールドを挿入(合計をカウントする場所なので詳細とは限らない) @合計のカウント//非表示にしておく。 WhilePrintingRecords; numberVar ToltalValue; ToltalValue = ToltalValue +{値} //ページフッターに以下の式フィールドを挿入 @合計の出力 WhilePrintingRecords; numberVar ToltalValue; Top 1ページに座標指定(任意の位置に)でオブジェクトを配置する。 オブジェクトを詳細やグループヘッダー、フッターなどのセクションに関係なく、ページ全体から見た座標指定で配置したいことがあります。 例えば会社のロゴや背景画像を任意の場所に表示したいことがありますが、詳細や、グループヘッダー、フッターはレコード数により位置がずれるので配置する場所として妥当ではありません。 通常ロゴなどは、位置が固定されるレポートヘッダー、ページヘッダー及びそれらのフッターといったような場所に挿入します。 しかし、その方法では理想のデザインにならず、ページ内に座標を指定して任意の場所にオブジェクトを配置したいことが考えられます。 しかし、クリスタルレポートはページ内で座標指定はできません・・・。 そこで以下のようなデザインにすることで擬似的に位置決めを行います。 1. ページヘッダーをページの大きさの限界まで広げ、1ページ分の余白を作ります。 ※ページの基本構成はページヘッダーとページフッターなので、広げられる限界はページフッター分を引いた大きさです。ページヘッダーをページ全体に広げる場合はページフッターを削除(非表示に)します。 2. ページヘッダーの任意の場所のオブジェクトを配置します。 3. このままでは、レポートにページヘッダーしか表示されないので、セクションエキスパートを開き、ページヘッダーの設定で「続くセクションをアンダーレイ」にチェックします。 すると、他のセクションとマージされ、オブジェクトを座標指定しているように見せかけることができます。 ※ページヘッダー分の領域がなくなることになるので、他のセクションの余白を調整する必要があります。 Top レポートフッターで改ページしたい。 レポートフッターは改ページできないため、詳細を分割して代用します。 例えば詳細aと詳細bを用意し、詳細bをレポートフッター用にします。 最後のページきたら詳細bを表示し、それ以外では表示しないようにします。 セクションエキスパートで詳細bの非表示設定の条件付書式設定で以下の式を挿入します。 WhilePrintingRecords; PageNumber TotalPageCount; Top 指定行で改ページしたい。 次の二つの式フィールドを作成し、@行数の初期化をページヘッダーに、@行数のカウントを詳細に挿入します。 また、それぞれフィールドのプロパティで非表示にしておきます。 つづいてセクションエキスパートを開いて、改ページ条件を詳細の「出力後に改ページ」の条件式に記述します。 // @行数の初期化 ページヘッダーに挿入する WhilePrintingRecords; numberVar line = 0; // @行数のカウント 詳細に挿入する WhilePrintingRecords; numberVar line; line = line + 1; // 改ページ条件 詳細の「出力後に改ページ」の条件式に記述する WhilePrintingRecords; numberVar line; line = X // Xは表示したい行数 Top データソース関連 データソースの置換したい。 フィールドエクスプローラのデータベースの欄を右クリック⇒「データソースの保存場所の設定」から行います。 置換先にないカラムは型が同じであるならばマージ先を指定できます。 Top フィールドデータの編集 文字列を連結したい。 「+」もしくは「 」でで結びます。 ただし、CrystalReportsのバージョンが古い場合、「 」が使えない可能性があります。 WhilePrintingRecords; 文字列の + 連結 ; // 文字列の連結 Top 文字列を分割したい。 左から何文字分を取得したい場合はLeft(文字列, 文字数) 右から何文字分を取得したい場合はRight(文字列, 文字数) 指定位置から何文字分取得したい場合はMid(文字列, 開始位置, 文字数) を使います。 Top 文字列を置換したい。 Replace()を利用します。 Replace( abcabcabc , b , a ); // aacaacaac // 変換を複数回行いたい場合は一度変数に格納する方が無難である。 stringVar str; str = Replace( abcabcabc , b , a ); // aacaacaac Replace(str, c , a ); // aaaaaaaaa Top 文字列を指定文字数になるまで指定文字で埋めたい。 Right()またはLeft()を応用して使います。 本来Right()は指定された文字列の右端から、指定された文字数分の文字を取り出す関数です。 これを利用して取り出す前に埋め込む文字を左側に結合しておきます。 //10桁になるまで0を埋め込みたい //左側に埋め込む stringVar str; str = 123 ; Right( 0000000000 str, 10); //0000000123 //右側に埋め込む Left(str 0000000000 , 10); //1230000000 Top 文字列に変換したい。 ToText()を使います。 論理値フィールドや数値フィールド、日付フィールドの値はToText()によって文字列に変換できます。 WhilePrintingRecords; stringVar str; numberVar num; str = 文字列 ; num = 123; // 文字列 と 数値123を文字列に変換して連結する str = str + ToText(num); // 文字列123 Top 数値を文字列に変換するときに小数点以下の桁数を指定したい。 CStr()を使います。 CStr()は機能的にはToText()といっしょで様々な型を文字列に変換する関数ですが、オプションで様々な変換形式を指定できます。 WhilePrintingRecords; stringVar str; numberVar num; num = 123; // 小数点以下を表示しない str = CStr(num, 0); Top 数値を四捨五入したい。 Round(x, y)を使います。 Round(1.23456) //1 を返す //2番目の引数を指定した場合、指定した桁数で丸め込まれる。 Round(1.23456, 2) //1.23 を返す。 Top 除算した余りを求めたい。 Remainder(分子, 分母)を使います。 Remainder(12,5) //2 を返す。 Remainder(16,5) //1 を返す。 Top 変数に値を代入したい。 式フィールドなどで変数に値を代入する場合、「 =」演算子を使います。 numberVar num = 0; Top フィールド表示形式 小数点以下の桁数を指定したい。 「フィールドの書式設定」→「数値」タブ→「ユーザ設定」→「数値」タブ→「小数点以下の桁数」で指定します。 もし、動的に桁数を変えたいならば条件付き書式設定で以下のサンプルのようなコードを記述します。 WhilePrintingRecords; //指定したフィールドの値が0なら小数点以下桁数を表示しない、0以外なら第2位まで表示 if {フィールド名} = 0 then 0 else 2; /////////////////////////////// WhilePrintingRecords; //指定したフィールドの値が小数点以下の値を含まないなら小数点以下を表示しない、含むなら第2位まで表示 if ({フィールド名} - RoundUp({フィールド名}, 0)) = 0 then 0 else 2; Top フィールドを非表示にしたい。 設定したいフィールドを選択→「フィールドの書式設定」→「共通」タブ→「非表示」チェックボックスをチェックします。 Top テキストの合成について。 テキストフィールド内にフィールドをドラッグ ドロップするとテキストが合成されます。 例. ・ [] このフィールドに、 km/h という値を持つフィールド(例えばフィールド名 Unit)をドラッグ ドロップ ・デザイナ上、 [Unit] のように表示されます ・レポートを実行すると、 [km/h] として表示されます Top 文字列を指定位置で改行したい。 テキストフィールドに挿入する文字列が長い場合、複数行に分けたい場合があります。 しかし、OSにより改行の仕方が違うので思い通りに改行できないことがあります。 以下のコードは指定した文字数で改行を行うものです。 ただし、 プロポーショナルフォントや半角/全角の違いの影響を受けます。 @10文字単位で改行するフィールド WhilePrintingRecords; stringVar str; stringVar res; numberVar i; str = {文字列}; // 対象の文字列から1文字づつ抽出する。 for i = 1 to Length(str) step 1 do( res = res + str[i]; // 10文字単位で改行コード(chr(13) + chr(10))を埋め込む。 if Remainder(i,10) = 0 then res = res + chr(13) + chr(10) else res; ); stringVar res; Top テキストフィールドの改行が思い通りにいかない場合。 通常、 複数行に出力 にチェックを入れていれば、フィールドの幅に収まりきらなかった場合に自動で改行されます。しかし、チェックしたにも関わらず変なところで改行される場合があります。 これはUSP10.DLLのバージョンの違いにより発生します。USP10.DLLのバージョンはOSによって違います(以下のページを参照)。 http //www.agtech.co.jp/support/faq/crystal_reports/CR_all/cr_general/20031106005.html 上記ページによるとWindows2000のUSP10.DLLが最も正常な改行を行っているようで、自分のマシンWin2000以外の場合、Win2000のUSP10.DLLに入れ替えれば直るらしいです。 ただし、USP10.DLLは一つのマシンに一つとは限らないので、アプリケーションに影響を与えているUSP10.DLLはどれに当たるのか調べなければなりません。 Top フィールドを罫線で囲みたい。 通常、罫線には線オブジェクトを使いますが、表示する内容によって幅が変動する場合ずれてしまいます。 そういうときは、フィールドの書式設定の境界線タブを開き、線のスタイルで指定します。 条件付き書式設定を行えるので結構汎用できる項目です。 Top 線オブジェクトの表示・非表示を動的に切り替えたい。 線オブジェクトやボックスオブジェクトには条件付き書式設定がないので、動的な設定変更は無理です。 そこで、セクションを分けて、そこに線オブジェクトだけを配置し、セクションの条件付き書式設定で表示・非表示を切り替えることにより対処します。 もし同じ行に複数の線オブジェクトを配置したい場合は、同様にセクションを分け、前のセクションで「続くセクションをアンダーレイ」にチェックすれば可能です。 Top 日付を和暦表示したい。 フィールドの書式設定を開き、[日付]タブを選択する。スタイルのユーザー設定ボタンを押すとカスタムスタイルを指定できるので、そこでカレンダーの種類を和暦に変えます。 年号(平成など)をつけたい場合は前置記号に書きます。 Top テキストオブジェクトの改行の仕方。 通常、CrystalReportsのフィールドオブジェクトの値はプログラム側(.NET Framework)から直接そのオブジェクトを指定することにより変更することができます。 しかし、CrystalReports9のDeveloper又はAdvanced Editionsではこの方法では改行コードを受け付けません。 式フィールドを使う必要があります。 http //support.businessobjects.com/library/kbase/articles/c2015089.asp Top 境界線が消えないようにする。 境界線はフィールドのデータが空白やNullの場合に消えてしまいます。 消えないようにするにはそのフィールドを以下のような式フィールドに置き換えます。 WhilePrintingRecords; If Isnull({フィールド}) = true then // 復帰文字(\r)に置き換える chr(13) else {フィールド} Top フィールドのデータがNullかどうかを判断したい。 IsNull({フィールド名})で判断できます。 Top プログラム側からの制御 総ページ数を取得する。 このサンプルコードを実行する前にログオン情報やパラメータフィールドがあるならちゃんと値を設定しておかなければなりません。 (参考 http //support.businessobjects.com/library/kbase/articles/c2013559.asp?ref=devzone_net_archive) //reportはレポートのインスタンス //VB.NET Dim intPages As Integer CrystalReportが返す全ページ数を得る intPages = report.FormatEngine.GetLastPageNumber(New CrystalDecisions.Shared.ReportPageRequestContext) //C#.NET CrystalDecisions.Shared.ReportPageRequestContext req = new CrystalDecisions.Shared.ReportPageRequestContext(); int intPages = report.FormatEngine.GetLastPageNumber(req); Top テキストフィールドの値を取得または変更する。 フィールドオブジェクト名はレポートのデザインでフィールドを右クリックして「テキストの書式」を開き、「共通」タブのオブジェクト名を参照します。 CrystalDecisions.CrystalReports.Engine.TextObject txtObj; txtObj=rptObj.ReportDefinition.ReportObjects[ フィールドオブジェクト名 ] as CrystalDecisions.CrystalReports.Engine.TextObject; txtObj.Text = なんちゃらかんちゃら ; Top 式フィールドに値を代入する。 サンプルを参照してください。 注意点 その1、式フィールド名とは新規に式を作成する際与える名前のことです。 その2、式フィールドのTextプロパティの内容はあくまで式であるのでCrystalReportsの式構文チェックをパスするような内容にしなければなりません。 //reportはレポート名 report.DataDefinition.FormulaFields.Item( 式フィールド名 ).Text = なんちゃらかんちゃら // で囲っていることに注意 // なんちゃらかんちゃら ではエラーとなる。 //数値の場合はそのままで大丈夫。 Top 式フィールドの式を取得または変更する。 サンプルを参照してください。 CrystalDecisions.CrystalReports.Engine.FormulaFieldDefinition field; field = rptObj.ReportDefinition.ReportObjects[ フィールドオブジェクト名 ] as CrystalDecisions.CrystalReports.Engine.FormulaFieldDefinition; field.Text = なんちゃらかんちゃら ; // 条件に合致するフィールドを検索したい場合、以下のようにしてもOKよ。 foreach(CrystalDecisions.CrystalReports.Engine.FormulaFieldDefinition field in rptObj.DataDefinition.FormulaFields) { if(field.ValueType == CrystalDecisions.Shared.FieldValueType.StringField) { System.Console.Writeline(field.Text); } } Top 動的にグループ条件を変更する。 式フィールドを利用することで動的にグループ条件を変更できます。 サンプルを説明します。 まずフラグになる式フィールド(@フラグ)を用意します。 次にグループ条件となる式フィールド(@動的グループ)を用意し、このフィールドでグループを作ります。 そして、プログラム側でフラグを制御することでグループ条件を切り替えます。 //@フラグ 1 //@動的グループ WhileReadingRecords; //←WhilePrintingRecordsでないことに注意 if {@フラグ} = 1 then {名前} else {住所} Top 動的にグループをOn/Offしたい。 データベースのフィールドを直接指定するやり方ではできません。 グループ条件を変更するやり方と同じように式フィールドを利用します。 まずフラグになる式フィールド(@フラグ)を用意します。 次にグループ条件となる式フィールド(@動的グループ)を用意し、このフィールドでグループを作ります。 そして、プログラム側でフラグを制御することでOn/Offを切り替えます。 else以下は文字列型のときしか使えませんので必要に応じて消してしまってかまわないと思います。 //@フラグ 1 //@日付によるグループ WhileReadingRecords; //←WhilePrintingRecordsでないことに注意 if {@フラグ} = 1 then {名前} else Top レポートに表示しているデータをプログラム側から変更したい。 例えば、タイトルなどは表示する内容によって変えたい場合があります。 そういったときはパラメータフィールドを使います(テキストフィールドや式フィールドでも行えます)。 静的なパラメータフィールドを新規作成します。 オプションはデフォルトのままでかまいません。 ただし、レポートを表示するときデフォルト値がないまたはプログラム側からパラメータ値が指定されていない場合、 パラメータの入力を求めるダイアログが表示されます。 以下のようなコードを利用して必ずパラメータ値を指定しておくか、予めデフォルト値を設定しくべきです。 // rptObjはレポートオブジェクト rptObj.SetParameterValue( レポートタイトル , クリレポチップス集 ); Top サブレポートを取得する。 サンプルを参照してください。 // rptはレポートドキュメントオブジェクト SubreportObject subRptObj; subRptObj = rpt.ReportDefinition.ReportObjects[ SubReport1 ] as SubreportObject; ReportDocument subRpt = subRptObj.OpenSubreport(subRptObj.SubreportName); //又は以下のようにする。こっちの方がスマート SubreportObject subRptObj; subRptObj = rp.ReportDefinition.ReportObjects( SubReport1 ) Top 接続先データベース(データソース)を切り替える(その1)。 データベースに接続する方法は3種類あります。 CrystalDecisions.CrystalReports.Engine.ReportDocument report; //絶対パスが無難 string path = Application.StartupPath + @ \report.rpt ; report.Load(path); // ユーザ名,パスワード,サーバー名,データベース名の順 report.SetDatabaseLogon( oraUser , oraPassword , oraSever , ); report.Database.Tables[0].Location = oraUser + . + report.Database.Tables[0].Location; Top 接続先データベース(データソース)を切り替える(その2)。 CrystalDecisions.CrystalReports.Engine.ReportDocument report; //絶対パスが無難 string path = Application.StartupPath + @ \report.rpt ; report.Load(path); TableLogOnInfo logOnInfo = new TableLogOnInfo(); logOnInfo = report.Database.Tables[ Table1 ].LogOnInfo; ConnectionInfo connectionInfo = logOnInfo.ConnectionInfo; connectionInfo.DatabaseName = ; connectionInfo.ServerName = oraServer connectionInfo.UserID = oraUser ; connectionInfo.Password = oraPassword ; report.Database.Tables[ Table1 ].ApplyLogOnInfo( logOnInfo ); Top 接続先データベース(データソース)を切り替える(その3)。 CrystalDecisions.CrystalReports.Engine.ReportDocument report; //絶対パスが無難 string path = Application.StartupPath + @ \report.rpt ; report.Load(path); report.DataSourceConnections[0].SetConnection( oraServer , , oraUser , oraPassword ); Top CrystalReportViewer でレポートの最後のページまで移動しないで最初のページに合計ページ数を表示する方法。 CrystalReportViewerのステータスバーやツールバーには合計ページ数が表示されますが、起動時には「1+」と表示されています。 起動時にちゃんと合計ページ数を表示させたければ、最初のページまたはレポートフッターで、TotalPageCountを取得してやれば良いです。 例えば以下の式フィールドを最初のページに挿入します。 //表示する必要がないので非表示にしておく WhilePrintingRecords; ToText(TotalPageCount,0); Top CrystalReportViewerのタブの「メインレポート」という文字を変更したい タブ自体を消すことはできませんが、タブ名は変更できます。 ビューアにレポートをセットしたあと、以下のサンプルコードで変更します。 foreach (Control obj in crystalReportViewer1.Controls) { if (obj.GetType().Name == PageView ) { foreach (Control obj2 in obj.Controls) { if (obj2.GetType().Name == TabControl ) { ((TabControl)obj2).TabPages[0].Text = 変更後名 ; } } } } Top CrystalReportViewerのツールバーに表示されているロゴをカスタマイズしたい Web用のビューアはロゴの表示/非表示がプロパティで可能ですがWindowsアプリケーション用にはないようです。 次のようにするしか方法はないのかもしれません。 以下のコードは適当に書いてみたテストコードです。 要はCrystalReportViewerをコントロールオブジェクトに分解してロゴを表示しているToolStripLabelオブジェクトを取得しています。 あとはそのラベルオブジェクトを煮るなり焼くなり・・・ (ちなみにCrystalReportViewerのツールバーは18個のToolStripItemから構成されていてロゴは18個目です。) こんなふうにすれば色々とカスタマイズできるかと思います。 private void button1_Click(object sender, EventArgs e) { List System.Windows.Forms.ToolStripLabel lbls = new List ToolStripLabel (); // コントロールオブジェクトに分解 foreach (Control ctl in crystalReportViewer1.Controls) { // ツールバーを取得 if (ctl.GetType().Equals(typeof(System.Windows.Forms.ToolStrip))) { System.Windows.Forms.ToolStrip strip = (System.Windows.Forms.ToolStrip)ctl; // ツールバーをアイテムに分解 foreach (ToolStripItem item in strip.Items) { // ラベルを取得 if (item.GetType().Equals(typeof(System.Windows.Forms.ToolStripLabel))) { lbls.Add(item); } } } } Bitmap bmp = new Bitmap( logo.jpg ); lbls[1].BackgroundImage = bmp; // ラベルは2個あってそのうちの2番目がロゴを表示しているラベルです。 //lbls[1].Visible = false; } Top CrystalReportViewerのレポートが表示されている部分のイベントをフックしたい。 当然ですが、適切なコントロールにイベントを設定しないと期待した動作は行われません。 まずCrystalReportViewerの持つPageViewコントロール(レポートが表示されているところ)を取得します。 PageViewはTabControl(「メインレポート」とか表示される部分)を持っているのでこれを取得します。 さらにTabControlのが持つDocumentControlを取得します。 このDocumentControlがレポートの内容を表示しているそのものです。 今回のような場合、こいつに対して設定するとレポートを表示している部分のイベント(マウス動作などなど)をフックすることができます。 foreach (Control ctl in crystalReportViewer1.Controls) { CrystalDecisions.Windows.Forms.PageView pv = ctl as CrystalDecisions.Windows.Forms.PageView; if (pv != null) { foreach (Control ctl2 in pv.Controls) { System.Windows.Forms.TabControl tabCtl = ctl2 as System.Windows.Forms.TabControl; if (tabCtl != null) { foreach (Control ctl3 in tabCtl.Controls) { CrystalDecisions.Windows.Forms.DocumentControl dc = ctl3 as CrystalDecisions.Windows.Forms.DocumentControl; if (dc != null) { dc.MouseWheel += new MouseEventHandler(dc_MouseWheel); } } } } } } Top 画像を指定して表示したい。 様々な表示方法がありますがここでは三つほど紹介します。 1. クリレポにBlobFieldObjectを貼り付け、プログラムで画像を読み込み、そのObjectに画像データを入れてやる方法。 2. クリレポにOleObjectを貼り付け、適当な式フィールドを用意し、OleObjectの画像保存場所にその式フィールドを指定、 あとはプログラムからその式フィールドに画像のパスを入れてやる方法。 3. クリレポにOleObjectを貼り付け、画像保存場所に適当な画像ファイルパスを指定しておき、プログラムで 目的の画像をOleObjectの画像パスに置換してやる方法。 CrystalReportViewerを使う場合は表示を更新しましょう。 私的には1の方法がお勧めです。 //1のサンプル System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(@ C \xxx.jpg ); using (System.IO.MemoryStream st = new System.IO.MemoryStream()) { bmp.Save(st, System.Drawing.Imaging.ImageFormat.Png); byte[] bytes = new byte[st.Length]; bytes = st.ToArray(); row[ 列名 ] = bytes; // rowはDataRowオブジェクト } //2のサンプル //rptはReportDocumentオブジェクト rpt.DataDefinition.FormulaFields.Item( 式フィールド名 ).Text = @ C \xxx.jpg //3のサンプル System.IO.File.Copy(@ C \org.jpg , @ C \xxx.jpg ); // 画像保存場所に C \xxx.jpg を指定しておく Top 印刷に関して プリンタから直接印刷する。 ReportDocumentオブジェクトのPrintToPrinter()を使うと、CrystalReportViewerコントロールを使わずに直接プリンタから印刷することができます。 // C#によるサンプル // ReaportDocumentオブジェクトの宣言 ReportFile rptObj = new ReportFile(); // ReportDocumentにデータをセット rptObj.SetDataSource( データセット ); // プリンタの設定 CrystalDecisions.CrystalReports.Engine.PrintOptions printOptions = rptObj.PrintOptions; // プリンタ名 printOptions.PrinterName = EPSON ○○○ ; // 用紙サイズ printOptions.PaperSize = CrystalDecisions.Shared.PaperSize.PaperA4; // マージン(余白) CrystalDecisions.Shared.PageMargins margins; margins.leftMargin = 10; margins.rightMargin = 10; margins.topMargin = 20; margins.bottomMargin = 20; // マージンの適用 printOptions.ApplyPageMargins(margins); // 印刷(上記設定を行わない場合、デフォルトのプリンタ及びデフォルトの設定で印刷される) rptObj.PrintToPrinter(1, false, 0, 0); Top CrystalReportViewerを使って印刷したい。 CrystalReportViewerには印刷ダイアログ表示機能がついているので、プログラム上での設定は必要ありません。 印刷ダイアログでは出力先のプリンタなどを変更できます。 ただし、次の2点に注意が必要です。 1.出力用紙サイズは変更できますが、レポート自身の大きさをここで変更することはできません。 2.印刷ダイアログが閉じたときに印刷されたのかキャンセルされたのかを判別することができません。 Top バーコードを出力したい。 バーコードを出力するにはバーコード用のフォントがいります。 CrystalReportsにはバーコードフォントが入ってないので、まずはそのバーコードフォントをインストールします。 バーコードフォントは商用のものからフリーのものまであります、フリーは種類が限られています。 インストールしたら、フィールドの書式設定でフォントをバーコードフォントに変えるだけです。 Top クリスタルレポートの余白をプログラムから設定したい。 次の例は、レポートのページ余白を設定し、プリンタを選択し、レポートを印刷する方法です。 [Visual Basic] Private Sub PrintReport(ByVal printerName As String) Dim margins As PageMargins PageMargins 構造体を取得し、 レポートの余白を設定します。 margins = Report.PrintOptions.PageMargins margins.bottomMargin = 350 margins.leftMargin = 350 margins.rightMargin = 350 margins.topMargin = 350 ページ余白を適用します。 Report.PrintOptions.ApplyPageMargins(margins) プリンタを選択します。 Report.PrintOptions.PrinterName = printerName レポートを印刷します。startPageN および endPageN パラメータを 0 に設定し、すべてのページを印刷します。 Report.PrintToPrinter(1, False, 0, 0) End Sub [C#] private void PrintReport(string printerName) { PageMargins margins; // PageMargins 構造体を取得し、 // レポートの余白を設定します。 margins = Report.PrintOptions.PageMargins; margins.bottomMargin = 350; margins.leftMargin = 350; margins.rightMargin = 350; margins.topMargin = 350; // ページ余白を適用します。 Report.PrintOptions.ApplyPageMargins(margins); // プリンタを選択します。 Report.PrintOptions.PrinterName = printerName; // レポートを印刷します。startPageN および endPageN // パラメータを 0 に設定し、すべてのページを印刷します。 Report.PrintToPrinter(1, false,0,0); } [C++] void PrintReport(String* printerName) { PageMargins margins; // PageMargins 構造体を取得し、 // レポートの余白を設定します。 margins = Report- PrintOptions- PageMargins; margins.bottomMargin = 350; margins.leftMargin = 350; margins.rightMargin = 350; margins.topMargin = 350; // ページ余白を適用します。 Report- PrintOptions- ApplyPageMargins(margins); // プリンタを選択します。 Report- PrintOptions- PrinterName = printerName; // レポートを印刷します。startPageN および endPageN // パラメータを 0 に設定し、すべてのページを印刷します。 Report- PrintToPrinter(1, false,0,0); }; Top 外字印刷。 外字が化けてしまう場合は以下のサイトよりサービスパックを当ててみます。 http //support.businessobjects.com/downloads/updates/service_packs/crystal_reports_jp.asp#Crystal_Reports Top その他 製品版とバンドル版の違い。 VS.NET Professional以上にはクリスタルレポートがバンドルされています(Standardにはついてない)。 このバンドル版CrystalReportsは製品版と比べて、以下のような機能制限があります。 * データ接続先の制限 * エクスポート形式の制限 (CSV, XML 無し) * ガイドライン/垂直ルーラ無し * レポートアラート無し * ActiveX ビューア、Java ビューア無し * Crystal Reports Server の利用不可 * その他 また、製品版はデザイナーでレポートをプレビューできるため、レポートを迅速にかつ正確に作成できます。 プレビュー側からデザインを編集できるのも良いと思います。 これらの制限はデザイン時の効率に影響するものばかりなので、機能的には十分実用可能です。 あとはCrystalReportsのグレードによっていろいろと機能が増えていきます(詳しくは製品の紹介を参照)。 Top VS.NETで実行ファイルにレポートファイル(rptファイル)を埋め込む。 CrystalReportsで作成したレポートファイルはプロジェクトに追加できます。 追加はメニュー[ファイル]から[既存項目の追加]を選ぶことでできるますが、実行ファイルに埋め込むにはどうするのでしょうか。 これはソリューションエクスプローラで追加されたレポートファイルのプロパティを開き、ビルドアクションを[埋め込まれたリソース]にすればOKです。 これにより、アプリケーションを配布するときにレポートファイルが必要なくなります。 Top レポートファイルは実行ファイルに埋め込んだ方が良い? レポートファイルを埋め込むか否かによって、配布の方式が違ってきます。 埋め込むと配布するのは実行ファイルだけで済みますが、埋め込まない場合はレポートファイルの配布も必要になります。 どちらが便利かは簡単には判断できません。これはアプリケーションがどれだけレポートファイルに依存するかに関わってきます。 具体的に言うとADO.netのDataSetを使う場合は、レポートファイルの配布はほとんど意味をなさないでしょう。なぜならレポートファイルに用いるデータベーススキーマはDataSetのスキーマであり、そのDataSetはプログラム内で作られるからです。つまり、プログラムの修正とレポートが密接に関わってくるため、どちらかのみ修正というケースが少ないはずです。 逆にDataSetを用いない場合、極端な例でいくとプログラム側はレポートファイルに印刷命令を出すだけで、どんなデータをどのように表示するかを全部レポートファイルにまかせる場合に、実行ファイルとレポートファイルを分けることのメリットが生まれることでしょう。 そして、CrystalReportsはSQL、クリスタル構文(BASIC構文)を用いてプログラム並みの作業をこなすことができ、実はビジネスロジックのほとんどをCrystalReportsで実装できます。 しかし、大抵のプログラマはプログラム側でデータを作成、編集した方が効率が良いと考えていると思うのでレポートファイルはほとんどデータ印刷用と化しているように思います。 Top Basic構文とCrystal構文の違い。 CrystalReportsで式を作成する場合、Basic構文で記述するかCrysal構文で記述するかを決めなければなりません。 レポート中でこれらを混用することはできますが、一つの式の中では混用できません。 どちらを使っても全く問題なく、やれることは大概いっしょです。 Basicに慣れている人ならBasic構文の方がやりやすいかもしれません。 ただし、サンプル例として挙げられるのはCrystal構文で書かれた式の方が多いです。 Top CrystalReportsのバージョンアップする際、前の環境を残しておきたい。 CrystalReports9からはサイドバイサイドでインストールできます。 つまり一つのPCに違うバージョンのCrystalReportsを共存させることができます。 Top CrystalReportsを用いたアプリケーションの配布について。 ここ参照。 Top TableModuleとTableDataGateway。 ここ参照。 Top CrystalReportsの関数のヘルプはないの? バージョンは少々古いですが、以下のサイトより関数ヘルプを落とせます。 http //support.businessobjects.com/communityCS/FilesAndUpdates/cr8_formularef_japanese.zip.asp Top CrystalReportsで印刷時に文字化けする。 .NET Frameworkとプリンタドライバの相性の問題の可能性が高いと思われます。 プリンタドライバを最新のものにしてみることをお勧めします。 Top ~ の文字化け。 これは、Oracle9.0.1.4.0以上、Oracle9.2以上とWindowsとで、SJISとUnicode間の変換を行う時の、Unicodeの対応が異なる為に発生するらしいです。直し方はデータベースの文字コード体系の設定を変えればいいらしいですが、いきなしデータベースの設定を変えるわけにもいかず試せてないので正直どうしたらいいかわかりません。 Top 「このフィールドは集計できません」というエラーの意味。 このエラーは非循環フィールドをSum()で集計しようとしたときに発生します。 Sum()は循環フィールドを集計する関数です。 非循環フィールドの例には以下のようなものがあります。 ・テキストフィールド ・変数を用いた式フィールド ・評価時期変更関数を用いた式フィールド ・積算合計フィールド(Sum()を用いて集計したものも含む) ・その他 このエラーを回避するにはSum()を使わずに変数によって集計するようにします。 //グループヘッダーに以下の式フィールドを挿入 @合計のリセット//非表示にしておく。 WhilePrintingRecords; numberVar ToltalValue =0; //詳細に以下の式フィールドを挿入 @合計のカウント//非表示にしておく。 WhilePrintingRecords; numberVar ToltalValue; ToltalValue = ToltalValue +{非循環フィールド} //グループフッターに以下の式フィールドを挿入 @合計の出力 WhilePrintingRecords; numberVar ToltalValue; Top CrystalReportsをバージョンアップしたら罫線の長さが太くなった。 これは例として、 CrystalReports4.6で作成したレポートをCrystalReports10で開いたときに起こることが報告されています。 細線で作成したはずの罫線が項目ブレーク毎に太くなるというものです。 CrystalReportsはバージョンアップに際し、下位互換性を保つためにサービスパックが提供されています。 なるべくそのバージョンのサービスパックを適用しておくのが無難だと思われます。 Top データベース構造の変更をレポートに反映させたい。 メニュー[データベース]から[データベースの照合]を実行します。 これによって、データベース構造の再取得を行い、フィールドを再構成します。 保存されていたデータベースのデータも最新のものに置き換わります。 保存されていたデータベースのデータだけ最新のものにしたい場合は、 メニュー[レポート]から[レポートデータの最新表示]を実行します。 しかし、デフォルトではメニュー[ファイル]の[レポートオプション]の[最初の最新表示時に照合]にチェックが入っているため、[レポートデータの最新表示]を実行すれば、同時に[データベースの照合]も行われます(つまりデフォルトでは機能が同じ)。 Top 特殊フィールドのレポートタイトルとかレポートコメントって何? 特殊フィールドの一つであるレポートタイトルまたはレポートコメントは、その名の通りレポートのタイトルやコメントを表示するフィールドですが、レポートに埋め込むことだけでは使うことができません。 これの値は[ファイル]メニューの[プロパティ]から「ドキュメント プロパティ」を開き、[概要]タブで指定することによって変更が可能です。 Top CrystalReportViewerのツールチップを抑制する。 CrystalReportViewerでオブジェクトにカーソルを当てるとツールチップテキストが表示されます。 これを表示しないようにするには、以下のように設定します。 1. デザインで表示させたくないフィールドの書式設定を開きます。 2.[共通]タブの「ツールヒント テキスト」の条件付き書式設定を開きます。 (右にある[x+2]みたいなボタンを押し、式エディタを開く) 3.以下の式を挿入します。 WhilePrintingRecords; Chr(9); Top 用語 WhitePrintingRecords WhitePrintingRecordsとは条件式を評価するタイミングを指定する宣言文です。。 通常、条件式は式の中でデータベースのデータを利用するかしないかで評価のタイミングが異なります。 [利用している場合] データを読み込む時に評価 [利用していない場合] データを読み込む前に評価 しかし、これを条件式の前で宣言しておくと、その条件式はデータをレポートに出力している最中に評価されるようになります。 例えば、積算合計などを変数を使って表示する場合、これを宣言しておかないと、まだ何も代入されていない合計値(つまり0)が出力されてしまうことになります。 なので、ちゃんと値が計算結果が代入されてから表示しましょうという意味を込めてWhilePrintingRecordsを宣言しておきます。 WhilePrintingRecordsを使うならその条件式に関連する条件式全てに、タイミングを合わせるために一応WhilePrintingRecordsを宣言しておくべきでしょう。 サンプルに示すのは変数を用いた積算合計の算出例です。 しかし、このような単純な積算合計ならば、デザイナに用意されている積算合計フィールドを使うのが一番てっとり早いと思います。 //グループごとの積算合計を表示したい場合、以下のようにする。 //グループヘッダーに以下の式フィールドを挿入。 WhilePrintingRecords; CurrencyVar Amount = 0; //詳細に以下の式フィールドを挿入。 WhilePrintingRecords; CurrencyVar Amount; Amount = Amount +{価格} //グループフッターに以下の式フィールドを挿入 WhilePrintingRecords; CurrencyVar Amount; Top CurrencyVar CrystalReportsの構文で用いる変数の型です。 CurrencyVarは通貨型とでも言うべきでしょうか。 この型で宣言した変数は通貨として扱われ、通貨記号(\マーク)がつきます。 ただし、通貨型といえど計算は通常の数値と同様に行われるので、数値型の代用として用いられることが多いです。 ちなみに数値型はNumberVar、文字列型はStringVar、日付型はDateTimeVarになります(他にもいろいろあるけどヘルプ参照のこと)。 Top ドリルダウン ドリルダウンとは、現在表示されているデータから一段階下の詳細なデータに掘り下げる行為全般を指します。 例えば、サブレポートを挿入してそいつをメインから参照する行為や、 そのグループのみに着目する行為などは全てドリルダウンしていることになります。 CrystalReportsでドリルダウンを禁止することはできません。なぜならドリルダウンはアプリケーションの機能というより人間の行為に近く、またその言葉の指す範囲が広いからです。 しかし、CrystalReportsにはドリルダウンに関する機能がたくさんあります。 中でもよく使われるのにやっかいなのが、セクションエキスパートで設定できる次の二つです。 ・「非表示-ドリルダウン可」 ・「非表示-ドリルダウン不可」 可とか不可とか書いてありますがドリルダウンを禁止するという意味ではありません。 そのセクションを非表示にした際、ドリルダウン先のセクションの内容を表示するかしないかの違いです。 ゆえに「非表示-ドリルダウン不可」はドリルダウンする意味がないので禁止に一番近いと思われます。 Top 条件付き書式設定 CrystalReportsの設定項目には各所に「×・2」と鉛筆マークみたい絵柄のボタンが見受けられると思います。 これが条件付き書式設定を行うボタンです。 ボタンを押すと式を作成するエディタが開くのでここに条件式を入力します。 条件が評価されるタイミングで、評価結果より動的にその項目の設定を変更できます。 例えば、フィールドの書式設定の共通タブにある「非表示」項目の条件付き書式設定を指定すると 評価結果が真の場合に「非表示」にチェックが入ります(つまり非表示になる)。 チェックボックスの操作だけでなく、フォントやフォントのサイズの切り替えなども動的に行うことができます。 このような様々な動作を規定できるため、条件式の戻り値はその項目に依存します。 Top Shared変数 CrystalReportsで使う専用のスクリプト言語(Crystal構文)で用いる変数のスコープです。 変数のスコープには以下のような三種類が用意されています。 ・Global (グローバル変数) 宣言したレポートで変数が共有されます。 ・Shared (共有変数) 現在のレポートおよびサブレポートで変数が共有されます。 最も効果範囲の広いスコープです。 ・Local :(ローカル変数) 変数が定義されている式の中でのみ共有されます。 変数に何も指定しなければGlobalとして扱われます。 // ページヘッダーに次のような式フィールドを挿入する。 @初期化 // 式フィールド名 numberVar count; // Globalな数値型変数countの使用を宣言する。 count = 0; // countに0を代入する。 // 詳細に次のような式フィールドを挿入する。 @インクリメント numberVar count; // Globalな数値型変数countの使用を宣言する。 //このcountは@初期化で宣言しているcountと同一のものであり、この時点ですでにcountには0が入っている。 count = count + 1; //countに0+1(=1)を代入する。 //詳細があるたびにcountは1ずつ増え、ページヘッダーでリセットされる。 //よって、countの役割は1ページ内のレコード数をカウントすることである。 Top 続くセクションをアンダーレイ CrystalReportsは機能の名称から機能の動作を連想しにくい事例が多々あります。 この機能は主に図などを利用する場合に用いられるのではないでしょうか。 これをチェックするとセクションの内容を、出力するときに次のセクションにマージしちゃいます。 例えば以下のような例でグループヘッダーのこの設定にチェックを入れたらどんな風になるでしょうか。 -----グループヘッダー------ 会社名 -----詳細--------------- A会社 ○○社長 (プレビュー) ・チェック入れなかった場合 ・チェック入れた場合 会社名 会社名 A会社 ○○社長 A会社 ○○社長 デザイン時にちゃんとマージされることを考慮しとかないと重なってぐちゃぐちゃになってしまいます。 Top データプロバイダ .NET Frameworkからデータベースにアクセスするために最初に行うのは、このデータプロバイダの選択です。 データプロバイダとはアプリケーションとデータソース(データベースやXMLなど)の橋渡しを行うものです。 そして、データソースの種類によりデータプロバイダにも様々な種類が存在します。 Top レポートファイル CrystalReportsで作成する拡張子rptのファイルのことです。 .NET Frameworkではレポートファイルをプロジェクトに追加すると同時に、ビルド時に、リソースとして埋め込まれるように設定され、なおかつプログラム内で扱えるようにオブジェクトにマージしてくれます(レポートファイルのクラスができる)。 Top 積算合計フィールド グループ化するときに総和やレコード数などを計算して埋め込むフィールド。 Top 特殊フィールド 出力日付やページ番号などのフィールド。 Top 式フィールド 実行時にCrystalReportsの関数を使って計算した式を埋め込むためのフィールド Top パラメータフィールド レポートに渡す変数となる値です。 パラメータフィールドには、プログラムから値を設定できます。 また、条件に合致するフィールドだけを抽出するときにも使われます。 Top グループ名フィールド グループ化するときのフィールドです。どの項目でグループ化するかを定義します。 グループ名フィールドを追加すると、「グループヘッダー」と「グループフッター」も追加されます。 Top SQL 式フィールド 接続先のデータソースがデータベースの場合、フィールドエクスプローラに「SQL 式フィールド」の項目が現れます。 データベース以外(DataSetやExcel)ではSQL 式フィールドは現れず、使うことはできません。 このフィールドは扱い的には式フィールドといっしょで、式の中で演算をしたり評価したりするのに使います。 式フィールドとSQL 式フィールドではその演算の仕組みとタイミングが異なります。 SQL 式フィールドにおける演算はSQLを用いて全てサーバー側で行われます。よって使う構文はSQLであり、演算の仕様はSQLに、その仕組みはデータベースに依存します。 式フィールドはCrystalReports側で演算を行うので、メモリ上にデータを展開して行うため、サーバー側で行うのに比べてスピードが遅く、マシンスペックに依存するので安定性に欠けることになります。 ゆえにスピードと安定性を求めるなら式フィールドではなくSQL 式フィールドを使う方が好ましいですが、機能的には式フィールドの方が優れているので、まぁ使い分けが必要なわけでして、レポート単位でどっちを使用するか決めた方が予期せぬバグが起こらなくて良いと思います。 Top License Key CrystalReportsで作成したレポートファイルを含んだアプリケーションをクライアントで動作させるには・・・結構めんどくさいです。 とりあえずまず初めに必要なのがこのLicense Key(登録キーコード)と呼ばれるキーコード。これは開発もとのBusiness Objectsで登録するともらえるようです。登録にお金はかからないので、どうやらただみたいです。 製品版を購入すると製品アクティベーションキーコード(俗に言うCD-Keyとかシリアルナンバーみたいなもの)が付属してきますが、これをLicense Keyの変わりに使うこともできるようです。 Top 循環フィールド クリスタルレポートはレコード単位でデータを参照する仕組みを持っています。 通常、デザインで配置されるフィールドはデータベースのフィールド(Column)に相当し、レコードが遷移することによって表示するデータ(情報)が変化します。 このようなフィールドは表示する情報がデータベースに完全に依存し、かつレコード単位で遷移することから循環フィールドと呼ばれることがあります。 Top 非循環フィールド 循環フィールドでないものを非循環フィールドと呼ぶことがあります。 つまり非循環フィールドとは、データベースに依存しないフィールドのことです。 例えば以下のようなフィールドが非循環フィールドに当たります。 ・テキストフィールド ・変数を用いた式フィールド ・評価時期変更関数を用いた式フィールド ・積算合計フィールド(Sum()を用いて集計したものも含む) ・その他 {値段}という循環フィールドがあったとします。 例1. //@値段1 {値段} * 1.05; //@値段1は循環フィールド 例2. //@値段2 numbarVar zei; zei = 0.05; {値段} + {値段} * zei //@値段2は非循環フィールド 例3. //@値段3 WhilePrintingRecords; {値段} * 1.05; //@値段3は非循環フィールド Top Chr(13) Chr(10) Chr(13) Chr(10) は復帰改行文字を表します。 Chr(13)は復帰文字 \r 、 Chr(10)は改行文字 \n を表す。 Windowsの改行は通常、復帰改行文字です。 Top ADO.NETのよくあるエラーと解決方法 追加情報 Parameter PARAM1 No size set for variable length data type String. [意味] パラメータ PARAM1 でエラー発生。可変長さデータ・タイプ(string型)にセットできるサイズが存在しません。 [説明] パラメータ変数にNULLを代入したときに発生する。 SQL文のパラメータ(OracleParameter)はデフォルトでNULLの代入を許さないようになっている。 NULLを許可させるためには、パラメータオブジェクトのIsNullableプロパティをTrueにする。 OracleDataAdapterを利用している場合、IsNullableをセットすることは不可能であると思われる。 C# OracleParameterクラスを使った例 string str = パラメータデータ ; System.Data.OracleClient.OracleCommand command = new System.Data.OracleClient.OracleCommand(); // 変数名 PARAM1 、データ型 VARCHAR 、サイズ 20 でOracleParameterオブジェクト parameter を宣言 System.Data.OracleClient.OracleParameter parameter = new System.Data.OracleClient.OracleParameter( PARAM1 , OracleType.Char, 20 ); parameter.IsNullable = true; parameter.Value = str; command.Parameters.Add( parameter ); Top 追加情報 ORA-01400 cannot insert NULL into ( PESON_DB . PESON . ADDRESS ) [意味] ADDRESS フィールドにNULLを挿入できません。 [説明] ADDRESS フィールドに NOT NULL 制約が存在する。そこにNULLを代入しようとしたために発生する。 SQL Plusで NOT NULL 制約を解除すれば良い。 // NOT NULL 制約を解除する場合 SQL alter table PERSON modify ADDRESS varchar(50) null; // NOT NULL 制約を付加する場合 SQL alter table PERSON modify ADDRESS varchar(50) not null; //commitを忘れずに Top 追加情報 ORA-01008 not all variables bound [意味] 一部パラメータが存在しません。 [説明] パラメータつきクエリでパラメータが宣言されていないときに発生する。 OracleCommand.CommandTextに設定しているクエリのパラメータと OracleCommand.Parametersに設定しているパラメータを確認する。 Top 追加情報 ORA-01036 変数の名前/数が無効です。 [意味] パラメータの名前もしくは数が一致しない。 [説明] パラメータの名前もしくは数が一致しない場合に発生する。 クエリのパラメータとOracleCommandに設定したパラメータの数およびスペルを確認する。 よくある間違いを以下にあげる。 ・クエリのパラメータの順番が違う。 ・ の間違い。クエリ中でパラメータ名には をつけるが、 を省いた部分がパラメータ名であるのでOracleParameterでは を省いて指定する。 ・大文字小文字の間違い。 ・単純にパラメータが抜けている。 Top 追加情報 No data exists for the row or column. [意味] 行または列にデータが存在しません。 [説明] データを取得しようとしたときに、データがNULLだと発生する。 IsDBNull()メソッドでNULLかどうか調べてから取得するようにする。 Top 追加情報 ORA-00920 invalid relational operator [意味] 比較演算子が無効です。 [説明] 比較演算する箇所で比較演算が不正・できないときに発生する。 = , = , = , , などの比較演算子が正しく記述されているか確認する。 Top 追加情報 ORA-00923 FROM keyword not found where expected [意味] FROMキーワードが指定位置に見つかりません。 [説明] SQLクエリにFROMキーワードがない、もしくは , などの忘れによって認識できない場合に発生する。 SQLクエリを良く見直せば案外簡単に直るエラー。 Top 追加情報 ORA-01008 バインドされていない変数があります。 [意味] OracleParameterがセットされていない。 [説明] SQLクエリでパラメータ変数を使用しているにもかかわらず、OracleParameterがOracleCommandにセットされていないときに生じる。 大抵、パラメータ文字列の不一致により起きる。 //C# OracleParameterクラスを使った例 string str = パラメータデータ ; System.Data.OracleClient.OracleCommand command = new System.Data.OracleClient.OracleCommand(); // 変数名 PARAM1 、データ型 VARCHAR 、サイズ 20 でOracleParameterオブジェクト parameter を宣言 System.Data.OracleClient.OracleParameter parameter = new System.Data.OracleClient.OracleParameter( PARAM1 , OracleType.Char, 20 ); parameter.IsNullable = true; parameter.Value = str; command.Parameters.Add( parameter ); Top 追加情報 ORA-00936 式がありません。 [意味] SQLクエリに必要な式がない。 [説明] SQLクエリのWhere句に、式がないまたは式が認識できない場合に起きることがある。 Top 追加情報 ORA-00918 列の定義が未確定です。 [意味] データベースにSQL文に書いた列が存在しない。 [説明] 単純に列名を間違えているとか、複数テーブルなどからデータを取得している場合にはどのテーブルの列かを指定する必要があるのに、それがないためにどのテーブルの列か認識できない場合に起きることがある。 Top 追加情報 ORA-00933 SQL command not properly ended [意味] SQLコマンドが正しく終了されていない。 [説明] SQLクエりが正しくない場合に起きる。様々な理由が考えられるが「,」などの忘れがないかを確かめる。 Top リンク集 クリスタルレポート関連 むかむか クリスタルレポート入門 Top
https://w.atwiki.jp/holdem/pages/27.html
こちらでは、ホールデムマネージャーのReportsタブについて説明します。 Hero(自分) Game Mode(キャッシュかトーナメントの選択) Options(基本的な設定) Heads-Up Display(HUDの設定) Reports(ステークス別やポジション別などハンドを好きに分類して7に表示させられます) Filters(7のハンドデータを期間やハンドレンジで絞ることができます) 項目別のデータ表 個別のハンド一覧 フィードバックを送れたり、ハンドインポート中は進行度を表示したり、現在設定されてるHeroのプレイヤー名(ルーム名)を表示したり
https://w.atwiki.jp/reportdesigner/pages/99.html
#blognavi Q. Report Designerで条件検索したデータを改ページせず連続して表示するには? A. フォームのページに囚われずに連続してレポートを表示場合は、下記のパラメータを指定して実行します。 設定方法) パラメータ入力画面に「/ronepgrpt」を追加します。 カテゴリ [FAQ] - trackback- 2012年09月05日 17 51 06 #blognavi
https://w.atwiki.jp/reportdesigner/pages/84.html
#blognavi Report Designerのフォーム上に配置したオブジェクト(テキストボックス、表のセル等)の 文字を回転させて表示することができます。 ■指定方法 オブジェクトを選択し、Ctrl+8キーで回転させます。 カテゴリ [FAQ] - trackback- 2011年04月20日 15 55 17 名前 コメント #blognavi
https://w.atwiki.jp/haruhi_vip/pages/1232.html
Report.02 涼宮ハルヒの認識(前編) 「何(なん)やの? せっかく我らSOS団が犯人とっ捕まえたろ思(おも)てんのに。」 【何(なん)なの? せっかく我らSOS団が犯人をとっ捕まえてやろうと思ってるのに。】 「ええ加減にして! 私はあんたらに頼んだ覚えない! 勝手に押しかけてあれこれいらんことするわ、偉そうに根掘り葉掘り嫌な事を聞いてくるわ……あんたら一体何様やの!? そんなに人の不幸が嬉しいんか!? 最っ低や!!」 【いい加減にして! 私はあんたらに頼んだ覚えないわ! 勝手に押しかけてあれこれ余計なことするわ、偉そうに根掘り葉掘り嫌な事を聞いてくるわ……あんたら一体何様のつもり!? そんなに人の不幸が嬉しいわけ!? 最っ低!!】 「せっかく我らSOS団が特別にタダで事件を解決したろ言(ゆ)うてんのに! もうええわ、全然このありがたみが分かってへん人に、親切にしてやる必要もないわ。」 【せっかく我らSOS団が特別にタダで事件を解決したげるって言ってるのに! もういいわ、全然このありがたみが分かってない人に、親切にしてやる必要もないわね。】 「何が親切や! あんたのはただの野次馬根性やろが!! ……帰れ!!」 【何が親切よ! あんたのはただの野次馬根性でしょ!! ……帰れ!!】 少女Aは手に持っていた鞄を涼宮ハルヒに投げつけた。 涼宮ハルヒはひょいとその飛来物をかわして、 ごっ 鈍い音と共に、涼宮ハルヒの体が宙を舞った。そのまま吹き飛び、地面に落下する。 『…………』 これはわたしの台詞ではない。その場にいる全員が沈黙した。沈黙の原因人物は、そのままの姿勢でじっと涼宮ハルヒを見つめている。 状況を整理する。 ある晴れた日の午後、部室にやってきた涼宮ハルヒは、北高の近くにある光陽園女子の生徒に、最近出没している変質者に遭遇した人物がいるという話をした。涼宮ハルヒは既に独自調査により、その生徒を特定していたが、本報告ではその個人情報は重要ではないため、仮に『少女A』とする。 少女Aが変質者と遭遇し、どうなったかについては、情報が錯綜していて詳細が分からないという。 「これは事件やで! その変質者をとっ捕まえて、SOS団の名前を一気に世に広めるんや! そしたら、一躍SOS団は北高一の有名団体、サイトのアクセス数は鰻の滝上り! 不思議発見の依頼もじゃんじゃん舞い込んでくる! 間違いない!!」 【これは事件だわ! その変質者をとっ捕まえて、SOS団の名前を一気に世に広めるのよ! そうすれば、一躍SOS団は北高一の有名団体、サイトのアクセス数は鰻の滝上り! 不思議発見の依頼もじゃんじゃん舞い込んでくる! 間違いない!!】 涼宮ハルヒは、最後の「間違いない」をねちっこく発音しながら言った。 その後の展開は特筆するものはない。いつものように、同意する古泉一樹、おろおろする朝比奈みくる、何も言わないわたし、不承不承従う『彼』を引き連れて、『名探偵』の腕章を付けた涼宮ハルヒは意気揚々と聞き込みに向かった。このとき、『彼』はいつもより余計に長く、強く、今回の提案に反対していた。それは普段の『彼』の様子からすると、やや異例のことだった。 涼宮ハルヒは少女Aの周辺の人物を中心に聞き込みを行い、少女Aの居場所を突き止めると強引に公園に呼び出して、事件解決のための事情聴取と称して、嬉々としながら己の好奇心を満たしていた。 そして、冒頭の場面に至る。 少女Aと涼宮ハルヒは向かい合って立っていた。その左側に『彼』とわたし、右側のやや後ろに古泉一樹と朝比奈みくるが立っていた。そして涼宮ハルヒが、投げつけられた鞄を左側に動いてかわした瞬間、『彼』の右拳がカウンターで涼宮ハルヒの左頬を捉えた。 「……な……な……」 涼宮ハルヒは何が起こったか未だ把握できていない様子。殴られたときに唇を切ったのだろう、口からは少し血が垂れている。頭部への衝撃による意識の混濁は認められない。記憶の混乱は許容範囲。観測を継続する。 『彼』は涼宮ハルヒの視線と意識が『彼』に向いていることを確認すると、少女Aの方へ向き直り、土下座した。 「申し訳ありませんでした。」 少女Aは先ほどの激昂から気勢を殺がれた状態で、『彼』を見下ろす。 「俺らは、ほんまはあのバカタレを止めなあかんのに、後始末が面倒で止められへんかった。最低やと思います。俺らも同罪です。こんなんで許してもらえるとも思えへんけど、謝らしてください。ほんまに申し訳ありませんでした。」 【俺達は、本当はあのバカヤロウを止めなきゃならないのに、後始末が面倒で止められなかった。最低だと思います。俺達も同罪です。こんなことで許してもらえるとも思えないけど、謝らせてください。本当に申し訳ありませんでした。】 他のSOS団一同は固唾を呑んで見守っている。やがて少女Aは静かに口を開いた。 「土下座までしてるあんたに言うんは酷かもしれんけど、言わしてもらうわ。あんたら最低や。あの偉そうな女が一番悪いけど、後が怖ぁて女一人、よう止められへんかったあんたらも一緒や。」 【土下座までしてるあんたに言うのは酷かもしれないけど、言わせてもらうわ。あんたら最低よ。あの偉そうな女が一番悪いけど、後が怖くて女一人、ろくに止められなかったあんたらも一緒よね。】 「はい。」 『彼』は土下座をしたまま答えた。 「私が望むんは、ごくごく簡単なことや。」 【私が望むのは、ごくごく簡単なことよ。】 少女Aは一同を見ながら言った。 「もうこれ以上、この件で私らにチョッカイ掛けんとって。それで、できれば今後一切、私や私の身近な人に近づかんとって。要するに……放(ほ)っといて。それだけや。簡単なことやろ? こんなん。」 【もうこれ以上、この件で私達に手出ししないで。それで、できれば今後一切、私や私の身近な人に近づかないで。要するに……関わらないで。それだけよ。簡単なことでしょ? こんなの。】 「はい。」 『彼』はやはり土下座したまま答えた。 「そういうことやから。」 【そういうことだから。】 少女Aは落ちた鞄を拾うと、振り向かずに立ち去った。しばらくして、『彼』は立ち上がり、服を払いながら言った。 「聞いての通りや。俺らも帰るぞ。」 【聞いての通りだ。俺達も帰るぞ。】 そして、未だ呆然とした様子の涼宮ハルヒに言った。 「なあ、ハルヒ。こうなるまでお前を止められへんかった俺にこんなこと言う資格ないとは思うけど、それでもあえて言わしてもらうわ。」 【なあ、ハルヒ。こうなるまでお前を止められなかった俺にこんなこと言う資格ないとは思うけど、それでもあえて言わせてもらうぞ。】 非常に冷静な声で、『彼』は言った。 「お前は俺を怒らせた。よそ様に迷惑掛けんなや。」 【お前は俺を怒らせた。よそ様に迷惑掛けるな。】 『彼』はそれきり、涼宮ハルヒに目もくれず立ち去った。 「……手当てを。」 わたしは公園の水道まで行き、ハンカチを濡らして涼宮ハルヒ達の元へ戻ると、彼女の頬にハンカチを当てた。 「つ……! 痛つつ……」 ハンカチの冷たさに感覚を取り戻したのか、涼宮ハルヒは痛がる。涼宮ハルヒに対してはあからさまな情報改変は行えないので、人間の行う方法に則って介入するしかない。 傷の治りを少しだけ早めること、または痛みを和らげることは、観察対象に対して行ってはいけないことなのだろうか? 人間の言葉で言うところの『気休め』程度の情報改変でさえも、決して許されないのだろうか? わたしはある行動を実行することにした。 「これは痛みの取れるお呪(まじな)い。」 こう言うとわたしは、涼宮ハルヒの口に手を当てた。 「痛いの痛いの、飛んでけ。」 そして情報改変を行う。痛覚を少しだけ麻痺させ、強い痛みを感じなくなる程度に傷口を治癒させた。 「もう痛くないはず。」 「え……ん……何か、痛くなくなった、かも……」 「涼宮さん、今日はもう時間も遅(おそ)なったし、帰りましょ?」 【涼宮さん、今日はもう時間も遅くなったし、帰りましょ?】 朝比奈みくるが言った。 「あ……うん、そやね……今日は解散。……有希、ありがと。」 【あ……うん、そうね……今日は解散。……有希、ありがと。】 そう言うと涼宮ハルヒは、朝比奈みくるの付き添いの申出を断り、一人で帰宅した。 翌日の放課後。わたしはいつものように部室で本を読んでいた。朝比奈みくる、古泉一樹も既に部室にいる。あとは『彼』だけ。 「うーっす。」 部室のドアが開き、『彼』が入ってくる。 「今日はハルヒはおらへんで。学校を休んどぉ。」 【今日はハルヒはいないぞ。学校を休んでる。】 「さすがに昨日の今日じゃあ、顔も合わせづらいでっしゃろなぁ~」 【さすがに昨日の今日じゃあ、顔も合わせづらいでしょうねぇ~】 古泉一樹がいつもの表情で言う。言葉にはやや皮肉が込められている。 「俺は別に構(かま)へんかったけどな。」 【俺は別に構わなかったんだがな。】 『彼』はそう答えると、 「さて、ハルヒもおらへんことやし、今日の活動は無しでええやろ。」 【さて、ハルヒもいないことだし、今日の活動は無しで良いだろ。】 「そうは行きまへん。今日はあんさんに色々話がおます。」 【そうは行きません。今日はあなたに色々話があります。】 「今日は三人とも、俺に話があるんやろ? どうせ。」 【今日は三人とも、俺に話があるんだろ? どうせ。】 「はい! あたしもキョンくんにお話があります!」 わたしは…… 「…………」 わたしは無言で答えた。 「どうせ三人とも同じ内容やろけど、誰から行くんや?」 【どうせ三人とも同じ内容だろうけど、誰から行くんだ?】 「朝比奈さん、お先にどうぞ。」 「わかりました。……キョンくん! 女の子をグーで殴るなんて、どういうことなん!?」 【わかりました。……キョンくん! 女の子をグーで殴るなんて、どういうことなの!?】 朝比奈みくるは涙ながらに訴えた。 「俺もできれば、そこまではしたぁなかったんですけどね。」 【俺もできれば、そこまではしたくなかったんですけどね。】 『彼』は答えた。 「でも、でも……とにかく! 女の子を殴り飛ばすなんてダメです! 禁則事項ですっ!!」 「僕からも言わせてもらいまひょ。あんさん、女性をどつくなんて、最低でっせ。いつぞやの映画のときにも言いましたが、もっと冷静な人やと思(おも)てました。あの時は思い止まってくれましたが、今回は正直、失望しましたわ。」 【僕からも言わせてもらいましょう。あなた、女性を殴るなんて、最低ですよ。いつかの映画のときにも言いましたが、もっと冷静な人だと思っていました。あの時は思い止まってくれましたが、今回は正直、失望しましたね。】 古泉一樹は真面目な顔になって言い募る。 そう、『彼』はかつて激昂して、涼宮ハルヒに手を上げかけたことがある。その時は古泉一樹が止めて、未遂に終わった。翌日には『彼』が涼宮ハルヒに謝罪し、逆に鼓舞することで事態は一応の収束を見た。しかし、今回は誰も止めることなく、実行に移された。果たして涼宮ハルヒは殴り飛ばされ、まだ『彼』による事態の収拾も行われていない。 「長門は? 何か言いたいことあるん違(ちゃ)うんか?」 【長門は? 何か言いたいことがあるんじゃないのか?】 「…………」 正直に言う。この時わたしは戸惑っていた。昨日の『彼』の考えが分からなかったから。 情報統合思念体との接続を減らして自律行動の範囲を広げて以来、わたしには『戸惑う』機会が発生した。自ら考え、行動し、その責任を負うことは、実際に体験するとなかなか難しい。実行に至るまでに時間が掛かる場合が増え、実行を中止するようにもなった。 「まあ、ええわ。昨日のことの説明でも始めよか。俺もみんなに言(ゆ)うときたいことあるし。」 【まあ、良い。昨日のことの説明でも始めようか。俺もみんなに言っておきたいことがあるし。】 『彼』は静かに語りだした。 「僕は、昨日あんさんが何を思(おも)てあんなことをしたのか知りたいですな。」 【僕は、昨日あなたが何を思ってあんなことをしたのか知りたいですね。】 「まあ、そやろな。」 【まあ、そうだろうな。】 「わたしも。」 わたしは意を決して言った。 「わたしも、あなたの考えが知りたい。昨日の行動は、普段のあなたの言動からは想定外。」 「やれやれ。」 『彼』は、肩をすくめて言った。 「昨日俺が言(ゆ)うた台詞覚えとぉか? あの時俺は怒っとった。」 【昨日俺が言った台詞覚えてるか? あの時俺は怒ってた。】 「涼宮さんの行動にでっか?」 【涼宮さんの行動にですか?】 「もちろん、それもある。でもそれだけやない。俺はみんなと、何より俺自身の不甲斐なさに怒っとった。」 【もちろん、それもある。でもそれだけじゃない。俺はみんなと、何より俺自身の不甲斐なさに怒ってた。】 「不甲斐なさ?」 朝比奈みくるが問う。 「ええ、そうです。」 『彼』は言った。 「昨日のハルヒを一言で表現すると、『低俗で迷惑な野次馬』あるいは『クソ記者』や。古泉、お前はそう思わへんかったか?」 【昨日のハルヒを一言で表現すると、『低俗で迷惑な野次馬』あるいは『クソ記者』だ。古泉、お前はそう思わなかったか?】 「それは……」 古泉一樹は言葉に詰まる。 「今まで俺は、ハルヒの大概の無茶には付き合(お)うてきた。自分でも相当なお人好しやと思う。せやけどな、やっぱり俺でも我慢できひんことはある。」 【今まで俺は、ハルヒの大概の無茶には付き合ってきた。自分でも相当なお人好しだと思う。だけどな、やっぱり俺でも我慢できないことはある。】 「それが昨日のことっちゅうわけでっか?」 【それが昨日のことというわけですか?】 「そうや。あれは人としてやったらあかんことやと思う。考えてみ? お前は、人には言いたないような過去を、根掘り葉掘り聞き出されたいか? それも自分の低俗な好奇心を満たしてるだけやのに、いかにも『親切でやってあげてます』とか、『これこそが正義』とか、あまつさえ『こんなに親切で正義感あふれる私、素敵!』ていうような態度で。」 【そうだ。あれは人としてやってはならないことだと思う。考えてみろ。お前は、人には言いたくないような過去を、根掘り葉掘り聞き出されたいか? それも自分の低俗な好奇心を満たしてるだけなのに、いかにも『親切でやってあげてます』とか、『これこそが正義』とか、あまつさえ『こんなに親切で正義感あふれる私、素敵!』ていうような態度で。】 「そのように言われると……」 古泉一樹は沈黙した。 「朝比奈さん、あなたはどうですか? 例えば痴漢の被害に遭ったことをしつこく聞き出されたいですか?」 「うっ……で、でも! それでも女の子を殴るのは……!」 「ええ、俺も思います。その点については非常に残念に思います。」 「それなら今すぐ……」 「勘違いすな。」 【勘違いするな。】 言いかけた古泉一樹を遮り、『彼』は続けた。 「確かに俺は昨日、ついカッとなってやった。反省してる。でも後悔はしてへん。あの状況では他に方法がなかった。反省してるんは、そんな状況になる前にハルヒを止められへんかったことや。」 【確かに俺は昨日、ついカッとなってやった。反省してる。でも後悔はしてない。あの状況では他に方法がなかった。反省してるのは、そんな状況になる前にハルヒを止められなかったことだ。】 『彼』はわたし達を見回して、言った。 「朝比奈さん、長門、古泉。みんなはそれぞれ所属するところから与えられた立場がある。ハルヒ自身に影響を与えへんように、なるべく介入したないと思(おも)とぉ。ハルヒの機嫌を損ねると、閉鎖空間が生まれ、下手したら世界が滅ぶ。せやから、原則としてハルヒの言うことにはすべて従う。たとえそれが、どんなに周りに迷惑掛けることやったとしても。違うか?」 【朝比奈さん、長門、古泉。みんなはそれぞれ所属するところから与えられた立場がある。ハルヒ自身に影響を与えないように、なるべく介入したくないと思ってる。ハルヒの機嫌を損ねると、閉鎖空間が生まれ、下手したら世界が滅ぶ。だから、原則としてハルヒの言うことにはすべて従う。たとえそれが、どんなに周りに迷惑掛けることだったとしても。違うか?】 「そこまでやないですけど、見方によっては確かにそのように見えるかもしれまへんなぁ。」 【そこまでではありませんが、見方によっては確かにそのように見えるかもしれませんね。】 「その点に俺は怒っとった。はっきり言うわ。要するにみんなは、後の影響が怖くてよう物も言われへんイエスマンや。」 【その点に俺は怒ってた。はっきり言うぞ。要するにみんなは、後の影響が怖くてろくに物も言えないイエスマンだ。】 「あなたはどうなの?」 わたしは問う。 「言(ゆ)うた通り、何より俺自身の不甲斐なさに怒っとぉ。俺の立場は何や? 何のしがらみもない一般人、違うか? 本来なら何も気にせんと、一番ハルヒに意見できて、止めることができる立場やんか。」 【言った通り、何より俺自身の不甲斐なさに怒ってる。俺の立場は何だ? 何のしがらみもない一般人、違うか? 本来なら何も気にせず、一番ハルヒに意見できて、止めることができる立場じゃないか。】 『彼』はやや自嘲めいた口調になる。 「昨日彼女に言われた通りや。俺は後が怖くて女一人、よう止めへんかった。最低や。」 【昨日彼女に言われた通りだ。俺は後が怖くて女一人、ろくに止められなかった。最低だ。】 『…………』 一同、沈黙する。 「俺、思うんやけどな。」 【俺、思うんだけどな。】 ややあって、『彼』が再び口を開く。 「昨日、ハルヒがあれだけ暴走したんは、結局のところ、周りの人間のこの態度が原因やったん違(ちゃ)うかな。」 【昨日、ハルヒがあれだけ暴走したのは、結局のところ、周りの人間のこの態度が原因だったんじゃないかな。】 「と、申しますと?」 「どいつもこいつも、ハルヒを変人と思って相手にせえへんか、あいつの顔色を伺うばっかりで、誰も止めへん。要するに、誰も『涼宮ハルヒ』という人物を一人の人間としてまともに扱ってへん。腫れ物を触るように扱ってて、心から向き合う人間がおらへんかったんかもな。今だって似たようなもん違(ちゃ)うか? 自律進化の可能性だの、時間断層の中心だの、世界の創造主だの。涼宮ハルヒという『人間』やなくて、何か『怒らせると怖いけど便利な存在』としてしか扱ってへんか? 一人の、『人間』涼宮ハルヒとして、心から向き合ってると断言できるか?」 【どいつもこいつも、ハルヒを変人と思って相手にしないか、あいつの顔色を伺うばっかりで、誰も止めない。要するに、誰も『涼宮ハルヒ』という人物を一人の人間としてまともに扱ってない。腫れ物を触るように扱ってて、心から向き合う人間がいなかったのかもな。今だって似たようなもんじゃないか? 自律進化の可能性だの、時間断層の中心だの、世界の創造主だの。涼宮ハルヒという『人間』じゃなくて、何か『怒らせると怖いけど便利な存在』としてしか扱ってないか? 一人の、『人間』涼宮ハルヒとして、心から向き合ってると断言できるか?】 「……そう言われると、耳の痛いところではおますなあ。」 【……そう言われると、耳の痛いところではありますね。】 古泉一樹は、思案顔で答えた。 わたしはどうだろう? ……考えるまでもない。 この銀河を統括する情報統合思念体によって創られた、対有機生命体コンタクト用ヒューマノイド・インターフェイス。それがわたし。 自律進化の可能性を秘めた涼宮ハルヒの観測と保全。 それが最初期に与えられた、わたしの使命。存在意義。一人の人間として涼宮ハルヒと向き合うことなど、当初から想定されていない。 では、それらの前提条件を外した、「わたし」という個体はどうだろう? もしわたしがそれらの任務ではなく、つまり『インターフェイス』としてではなく、一人の『人間』長門有希として、涼宮ハルヒに向き合うとしたら? 「自分が何をしても、誰も止めへん。そんな環境で育ったら、大概の人間は感覚が狂って、わがままで人の心を慮ることを知らんどうしようもない人間になる。他人がその行動でどんな気持ちになるか、誰も教えてくれへんからな。自分がされて嫌な事は、言えばすぐにされへんようになるのに、周りの人間は自分が何をしても何(なん)も言わん。ということは、周りの人間は何をされても嫌やない。そう思うように育ってしまうわけや。」 【自分が何をしても、誰も止めない。そんな環境で育ったら、大概の人間は感覚が狂って、わがままで人の心を慮ることを知らないどうしようもない人間になる。他人がその行動でどんな気持ちになるか、誰も教えてくれないからな。自分がされて嫌な事は、言えばすぐにされなくなるのに、周りの人間は自分が何をしても何(なに)も言わない。ということは、周りの人間は何をされても嫌じゃない。そう思うように育ってしまうわけだ。】 「でも、涼宮さんは、表面上はわがままな人かもしれへんけど、ほんまは仲間想いの優しい人違(ちゃ)いますか?」 【でも、涼宮さんは、表面上はわがままな人かもしれないけど、本当は仲間想いの優しい人じゃないですか?】 朝比奈みくるが反論する。 「もちろんそれは、俺も知ってます。でも、よう考えてみてください。その優しさが、ハルヒが『仲間』と思ったものだけにしか向けられへんとしたら。仲間以外は『好奇の対象』でしかなかったとしたら。仲間と認定されてへん者には、あいつはどう映るでしょうね?」 【もちろんそれは、俺も知ってます。でも、よく考えてみてください。その優しさが、ハルヒが『仲間』と思ったものだけにしか向けられないとしたら。仲間以外は『好奇の対象』でしかなかったとしたら。仲間と認定されてない者には、あいつはどう映るでしょうね?】 「あっ……!」 朝比奈みくるが息を呑む。 「確かに、好奇心は、時に残酷でんな。好奇心を満たすためには、対象には無慈悲になれます。」 【確かに、好奇心は、時に残酷ですね。好奇心を満たすためには、対象には無慈悲になれます。】 「蟻の脚や触覚を一本ずつ抜き、胴体を節目ごとにばらす。そんな残酷なこともできるやろ?」 【蟻の脚や触覚を一本ずつ抜き、胴体を節目ごとにばらす。そんな残酷なこともできるだろ?】 『触覚を』の辺りで、朝比奈みくるは耳を塞いだ。……身に覚えがあるのだろうか。 「あいつの好奇心は無邪気で、それだけに、時に残酷に人を傷付けることもある。普通は傷付き、傷付けられて、学習して人は成長していくもんやと俺は思う。でもあいつは、あんな性格であんな能力がゆえに、人からまともに相手にされへんで、学ぶ機会がなかったか、極端に少なかったんかもしれへんな。せやから、昨日みたいなことも平気でできた。そんな気がすんねん。」 【あいつの好奇心は無邪気で、それだけに、時に残酷に人を傷付けることもある。普通は傷付き、傷付けられて、学習して人は成長していくもんだと俺は思う。でもあいつは、あんな性格であんな能力がゆえに、人からまともに相手にされなくて、学ぶ機会がなかったか、極端に少なかったのかもしれないな。だから、昨日みたいなことも平気でできた。そんな気がするんだ。】 「あんさんの言いたいことは、わかりました。涼宮さんへの態度については、我々『機関』にも思い当たるところは多々おます。それはそれとして、昨日の一件についてはどない処理するおつもりで?」 【あなたの言いたいことは、わかりました。涼宮さんへの態度については、我々『機関』にも思い当たるところは多々あります。それはそれとして、昨日の一件についてはどう処理するおつもりで?】 古泉一樹は、普段の微笑に戻り問うた。 「俺は今言うたこと、俺の気持ちをそのままハルヒに伝える。何で殴られたか分からんままやったら、意味ないしな。ところで、古泉。昨日はあれから、やっぱり閉鎖空間が現れて大変やったやろ? 謝っとくわ。すまん。」 【俺は今言ったこと、俺の気持ちをそのままハルヒに伝える。何で殴られたか分からないままだったら、意味ないしな。ところで、古泉。昨日はあれから、やっぱり閉鎖空間が現れて大変だっただろ? 謝っとくぜ。すまん。】 『彼』は古泉一樹に頭を下げる。 「実はその件についても話がおましてな。」 【実はその件についても話がありまして。】 古泉一樹はやや困惑したような顔で言った。 「仰るように、昨日は巨大な閉鎖空間が現れました。確かに大変でした。しかし、その大変は普段とは別の意味でして……」 ここで言葉を切る。 「別?」 「ええ。巨大な閉鎖空間が現れ、《神人》が現れました。そこまではいつもの閉鎖空間なわけですが……その、《神人》の行動が普段と違(ちご)てましてん。」 【ええ。巨大な閉鎖空間が現れ、《神人》が現れました。そこまではいつもの閉鎖空間なわけですが……その、《神人》の行動が普段と違っていました。】 古泉一樹は、肩をすくめながら言った。 「いつもの破壊活動をせえへんのですわ。」 【いつもの破壊活動をしないのですよ。】 「何(なん)やて?」 【何だって?】 「現れはしたものの、特に何をするわけでもなく、何と言うか……そう、『呆然』としとった、っちゅうのが一番適切な表現かもしれまへんなぁ。確かにストレスは感じとんのに、どないしたらええんか分からんっちゅう様子でしたなぁ。今の涼宮さんの心境も、そんな感じ違(ちゃ)いまっか?」 【現れはしたものの、特に何をするわけでもなく、何と言うか……そう、『呆然』としていた、というのが一番適切な表現かもしれませんね。確かにストレスは感じているのに、どうしたら良いか分からないという様子でしたね。今の涼宮さんの心境も、そんな感じではないでしょうか?】 「そうか……」 『彼』は考え込みながら言った。 「まあ、今日はハルヒもおらへんし、また明日伝えることにするわ。学校に来てくれた方が話しやすいし。もし明日も来てへんかったら……しゃあないな。その時はハルヒを探しに行くわ。そういうわけで、今日は帰ってええかな?」 【まあ、今日はハルヒもいないし、また明日伝えることにするさ。学校に来てくれた方が話しやすいし。もし明日も来てなかったら……仕方ないな。その時はハルヒを探しに行くか。そういうわけで、今日は帰って良いかな?】 「そうでんな。また明日っちゅうことで、今日は帰りましょか。」 【そうですね。また明日ということで、今日は帰りましょうか。】 わたしは本を閉じた。皆が帰り支度を始める。いつもの部室の風景。 すべては明日。 しかし翌日、事態は思わぬ展開を見せることになる。 ←Report.01|目次|Report.03→
https://w.atwiki.jp/haruhi_vip2/pages/1199.html
Report.02 涼宮ハルヒの認識(前編) 「何(なん)やの? せっかく我らSOS団が犯人とっ捕まえたろ思(おも)てんのに。」 【何(なん)なの? せっかく我らSOS団が犯人をとっ捕まえてやろうと思ってるのに。】 「ええ加減にして! 私はあんたらに頼んだ覚えない! 勝手に押しかけてあれこれいらんことするわ、偉そうに根掘り葉掘り嫌な事を聞いてくるわ……あんたら一体何様やの!? そんなに人の不幸が嬉しいんか!? 最っ低や!!」 【いい加減にして! 私はあんたらに頼んだ覚えないわ! 勝手に押しかけてあれこれ余計なことするわ、偉そうに根掘り葉掘り嫌な事を聞いてくるわ……あんたら一体何様のつもり!? そんなに人の不幸が嬉しいわけ!? 最っ低!!】 「せっかく我らSOS団が特別にタダで事件を解決したろ言(ゆ)うてんのに! もうええわ、全然このありがたみが分かってへん人に、親切にしてやる必要もないわ。」 【せっかく我らSOS団が特別にタダで事件を解決したげるって言ってるのに! もういいわ、全然このありがたみが分かってない人に、親切にしてやる必要もないわね。】 「何が親切や! あんたのはただの野次馬根性やろが!! ……帰れ!!」 【何が親切よ! あんたのはただの野次馬根性でしょ!! ……帰れ!!】 少女Aは手に持っていた鞄を涼宮ハルヒに投げつけた。 涼宮ハルヒはひょいとその飛来物をかわして、 ごっ 鈍い音と共に、涼宮ハルヒの体が宙を舞った。そのまま吹き飛び、地面に落下する。 『…………』 これはわたしの台詞ではない。その場にいる全員が沈黙した。沈黙の原因人物は、そのままの姿勢でじっと涼宮ハルヒを見つめている。 状況を整理する。 ある晴れた日の午後、部室にやってきた涼宮ハルヒは、北高の近くにある光陽園女子の生徒に、最近出没している変質者に遭遇した人物がいるという話をした。涼宮ハルヒは既に独自調査により、その生徒を特定していたが、本報告ではその個人情報は重要ではないため、仮に『少女A』とする。 少女Aが変質者と遭遇し、どうなったかについては、情報が錯綜していて詳細が分からないという。 「これは事件やで! その変質者をとっ捕まえて、SOS団の名前を一気に世に広めるんや! そしたら、一躍SOS団は北高一の有名団体、サイトのアクセス数は鰻の滝上り! 不思議発見の依頼もじゃんじゃん舞い込んでくる! 間違いない!!」 【これは事件だわ! その変質者をとっ捕まえて、SOS団の名前を一気に世に広めるのよ! そうすれば、一躍SOS団は北高一の有名団体、サイトのアクセス数は鰻の滝上り! 不思議発見の依頼もじゃんじゃん舞い込んでくる! 間違いない!!】 涼宮ハルヒは、最後の「間違いない」をねちっこく発音しながら言った。 その後の展開は特筆するものはない。いつものように、同意する古泉一樹、おろおろする朝比奈みくる、何も言わないわたし、不承不承従う『彼』を引き連れて、『名探偵』の腕章を付けた涼宮ハルヒは意気揚々と聞き込みに向かった。このとき、『彼』はいつもより余計に長く、強く、今回の提案に反対していた。それは普段の『彼』の様子からすると、やや異例のことだった。 涼宮ハルヒは少女Aの周辺の人物を中心に聞き込みを行い、少女Aの居場所を突き止めると強引に公園に呼び出して、事件解決のための事情聴取と称して、嬉々としながら己の好奇心を満たしていた。 そして、冒頭の場面に至る。 少女Aと涼宮ハルヒは向かい合って立っていた。その左側に『彼』とわたし、右側のやや後ろに古泉一樹と朝比奈みくるが立っていた。そして涼宮ハルヒが、投げつけられた鞄を左側に動いてかわした瞬間、『彼』の右拳がカウンターで涼宮ハルヒの左頬を捉えた。 「……な……な……」 涼宮ハルヒは何が起こったか未だ把握できていない様子。殴られたときに唇を切ったのだろう、口からは少し血が垂れている。頭部への衝撃による意識の混濁は認められない。記憶の混乱は許容範囲。観測を継続する。 『彼』は涼宮ハルヒの視線と意識が『彼』に向いていることを確認すると、少女Aの方へ向き直り、土下座した。 「申し訳ありませんでした。」 少女Aは先ほどの激昂から気勢を殺がれた状態で、『彼』を見下ろす。 「俺らは、ほんまはあのバカタレを止めなあかんのに、後始末が面倒で止められへんかった。最低やと思います。俺らも同罪です。こんなんで許してもらえるとも思えへんけど、謝らしてください。ほんまに申し訳ありませんでした。」 【俺達は、本当はあのバカヤロウを止めなきゃならないのに、後始末が面倒で止められなかった。最低だと思います。俺達も同罪です。こんなことで許してもらえるとも思えないけど、謝らせてください。本当に申し訳ありませんでした。】 他のSOS団一同は固唾を呑んで見守っている。やがて少女Aは静かに口を開いた。 「土下座までしてるあんたに言うんは酷かもしれんけど、言わしてもらうわ。あんたら最低や。あの偉そうな女が一番悪いけど、後が怖ぁて女一人、よう止められへんかったあんたらも一緒や。」 【土下座までしてるあんたに言うのは酷かもしれないけど、言わせてもらうわ。あんたら最低よ。あの偉そうな女が一番悪いけど、後が怖くて女一人、ろくに止められなかったあんたらも一緒よね。】 「はい。」 『彼』は土下座をしたまま答えた。 「私が望むんは、ごくごく簡単なことや。」 【私が望むのは、ごくごく簡単なことよ。】 少女Aは一同を見ながら言った。 「もうこれ以上、この件で私らにチョッカイ掛けんとって。それで、できれば今後一切、私や私の身近な人に近づかんとって。要するに……放(ほ)っといて。それだけや。簡単なことやろ? こんなん。」 【もうこれ以上、この件で私達に手出ししないで。それで、できれば今後一切、私や私の身近な人に近づかないで。要するに……関わらないで。それだけよ。簡単なことでしょ? こんなの。】 「はい。」 『彼』はやはり土下座したまま答えた。 「そういうことやから。」 【そういうことだから。】 少女Aは落ちた鞄を拾うと、振り向かずに立ち去った。しばらくして、『彼』は立ち上がり、服を払いながら言った。 「聞いての通りや。俺らも帰るぞ。」 【聞いての通りだ。俺達も帰るぞ。】 そして、未だ呆然とした様子の涼宮ハルヒに言った。 「なあ、ハルヒ。こうなるまでお前を止められへんかった俺にこんなこと言う資格ないとは思うけど、それでもあえて言わしてもらうわ。」 【なあ、ハルヒ。こうなるまでお前を止められなかった俺にこんなこと言う資格ないとは思うけど、それでもあえて言わせてもらうぞ。】 非常に冷静な声で、『彼』は言った。 「お前は俺を怒らせた。よそ様に迷惑掛けんなや。」 【お前は俺を怒らせた。よそ様に迷惑掛けるな。】 『彼』はそれきり、涼宮ハルヒに目もくれず立ち去った。 「……手当てを。」 わたしは公園の水道まで行き、ハンカチを濡らして涼宮ハルヒ達の元へ戻ると、彼女の頬にハンカチを当てた。 「つ……! 痛つつ……」 ハンカチの冷たさに感覚を取り戻したのか、涼宮ハルヒは痛がる。涼宮ハルヒに対してはあからさまな情報改変は行えないので、人間の行う方法に則って介入するしかない。 傷の治りを少しだけ早めること、または痛みを和らげることは、観察対象に対して行ってはいけないことなのだろうか? 人間の言葉で言うところの『気休め』程度の情報改変でさえも、決して許されないのだろうか? わたしはある行動を実行することにした。 「これは痛みの取れるお呪(まじな)い。」 こう言うとわたしは、涼宮ハルヒの口に手を当てた。 「痛いの痛いの、飛んでけ。」 そして情報改変を行う。痛覚を少しだけ麻痺させ、強い痛みを感じなくなる程度に傷口を治癒させた。 「もう痛くないはず。」 「え……ん……何か、痛くなくなった、かも……」 「涼宮さん、今日はもう時間も遅(おそ)なったし、帰りましょ?」 【涼宮さん、今日はもう時間も遅くなったし、帰りましょ?】 朝比奈みくるが言った。 「あ……うん、そやね……今日は解散。……有希、ありがと。」 【あ……うん、そうね……今日は解散。……有希、ありがと。】 そう言うと涼宮ハルヒは、朝比奈みくるの付き添いの申出を断り、一人で帰宅した。 翌日の放課後。わたしはいつものように部室で本を読んでいた。朝比奈みくる、古泉一樹も既に部室にいる。あとは『彼』だけ。 「うーっす。」 部室のドアが開き、『彼』が入ってくる。 「今日はハルヒはおらへんで。学校を休んどぉ。」 【今日はハルヒはいないぞ。学校を休んでる。】 「さすがに昨日の今日じゃあ、顔も合わせづらいでっしゃろなぁ~」 【さすがに昨日の今日じゃあ、顔も合わせづらいでしょうねぇ~】 古泉一樹がいつもの表情で言う。言葉にはやや皮肉が込められている。 「俺は別に構(かま)へんかったけどな。」 【俺は別に構わなかったんだがな。】 『彼』はそう答えると、 「さて、ハルヒもおらへんことやし、今日の活動は無しでええやろ。」 【さて、ハルヒもいないことだし、今日の活動は無しで良いだろ。】 「そうは行きまへん。今日はあんさんに色々話がおます。」 【そうは行きません。今日はあなたに色々話があります。】 「今日は三人とも、俺に話があるんやろ? どうせ。」 【今日は三人とも、俺に話があるんだろ? どうせ。】 「はい! あたしもキョンくんにお話があります!」 わたしは…… 「…………」 わたしは無言で答えた。 「どうせ三人とも同じ内容やろけど、誰から行くんや?」 【どうせ三人とも同じ内容だろうけど、誰から行くんだ?】 「朝比奈さん、お先にどうぞ。」 「わかりました。……キョンくん! 女の子をグーで殴るなんて、どういうことなん!?」 【わかりました。……キョンくん! 女の子をグーで殴るなんて、どういうことなの!?】 朝比奈みくるは涙ながらに訴えた。 「俺もできれば、そこまではしたぁなかったんですけどね。」 【俺もできれば、そこまではしたくなかったんですけどね。】 『彼』は答えた。 「でも、でも……とにかく! 女の子を殴り飛ばすなんてダメです! 禁則事項ですっ!!」 「僕からも言わせてもらいまひょ。あんさん、女性をどつくなんて、最低でっせ。いつぞやの映画のときにも言いましたが、もっと冷静な人やと思(おも)てました。あの時は思い止まってくれましたが、今回は正直、失望しましたわ。」 【僕からも言わせてもらいましょう。あなた、女性を殴るなんて、最低ですよ。いつかの映画のときにも言いましたが、もっと冷静な人だと思っていました。あの時は思い止まってくれましたが、今回は正直、失望しましたね。】 古泉一樹は真面目な顔になって言い募る。 そう、『彼』はかつて激昂して、涼宮ハルヒに手を上げかけたことがある。その時は古泉一樹が止めて、未遂に終わった。翌日には『彼』が涼宮ハルヒに謝罪し、逆に鼓舞することで事態は一応の収束を見た。しかし、今回は誰も止めることなく、実行に移された。果たして涼宮ハルヒは殴り飛ばされ、まだ『彼』による事態の収拾も行われていない。 「長門は? 何か言いたいことあるん違(ちゃ)うんか?」 【長門は? 何か言いたいことがあるんじゃないのか?】 「…………」 正直に言う。この時わたしは戸惑っていた。昨日の『彼』の考えが分からなかったから。 情報統合思念体との接続を減らして自律行動の範囲を広げて以来、わたしには『戸惑う』機会が発生した。自ら考え、行動し、その責任を負うことは、実際に体験するとなかなか難しい。実行に至るまでに時間が掛かる場合が増え、実行を中止するようにもなった。 「まあ、ええわ。昨日のことの説明でも始めよか。俺もみんなに言(ゆ)うときたいことあるし。」 【まあ、良い。昨日のことの説明でも始めようか。俺もみんなに言っておきたいことがあるし。】 『彼』は静かに語りだした。 「僕は、昨日あんさんが何を思(おも)てあんなことをしたのか知りたいですな。」 【僕は、昨日あなたが何を思ってあんなことをしたのか知りたいですね。】 「まあ、そやろな。」 【まあ、そうだろうな。】 「わたしも。」 わたしは意を決して言った。 「わたしも、あなたの考えが知りたい。昨日の行動は、普段のあなたの言動からは想定外。」 「やれやれ。」 『彼』は、肩をすくめて言った。 「昨日俺が言(ゆ)うた台詞覚えとぉか? あの時俺は怒っとった。」 【昨日俺が言った台詞覚えてるか? あの時俺は怒ってた。】 「涼宮さんの行動にでっか?」 【涼宮さんの行動にですか?】 「もちろん、それもある。でもそれだけやない。俺はみんなと、何より俺自身の不甲斐なさに怒っとった。」 【もちろん、それもある。でもそれだけじゃない。俺はみんなと、何より俺自身の不甲斐なさに怒ってた。】 「不甲斐なさ?」 朝比奈みくるが問う。 「ええ、そうです。」 『彼』は言った。 「昨日のハルヒを一言で表現すると、『低俗で迷惑な野次馬』あるいは『クソ記者』や。古泉、お前はそう思わへんかったか?」 【昨日のハルヒを一言で表現すると、『低俗で迷惑な野次馬』あるいは『クソ記者』だ。古泉、お前はそう思わなかったか?】 「それは……」 古泉一樹は言葉に詰まる。 「今まで俺は、ハルヒの大概の無茶には付き合(お)うてきた。自分でも相当なお人好しやと思う。せやけどな、やっぱり俺でも我慢できひんことはある。」 【今まで俺は、ハルヒの大概の無茶には付き合ってきた。自分でも相当なお人好しだと思う。だけどな、やっぱり俺でも我慢できないことはある。】 「それが昨日のことっちゅうわけでっか?」 【それが昨日のことというわけですか?】 「そうや。あれは人としてやったらあかんことやと思う。考えてみ? お前は、人には言いたないような過去を、根掘り葉掘り聞き出されたいか? それも自分の低俗な好奇心を満たしてるだけやのに、いかにも『親切でやってあげてます』とか、『これこそが正義』とか、あまつさえ『こんなに親切で正義感あふれる私、素敵!』ていうような態度で。」 【そうだ。あれは人としてやってはならないことだと思う。考えてみろ。お前は、人には言いたくないような過去を、根掘り葉掘り聞き出されたいか? それも自分の低俗な好奇心を満たしてるだけなのに、いかにも『親切でやってあげてます』とか、『これこそが正義』とか、あまつさえ『こんなに親切で正義感あふれる私、素敵!』ていうような態度で。】 「そのように言われると……」 古泉一樹は沈黙した。 「朝比奈さん、あなたはどうですか? 例えば痴漢の被害に遭ったことをしつこく聞き出されたいですか?」 「うっ……で、でも! それでも女の子を殴るのは……!」 「ええ、俺も思います。その点については非常に残念に思います。」 「それなら今すぐ……」 「勘違いすな。」 【勘違いするな。】 言いかけた古泉一樹を遮り、『彼』は続けた。 「確かに俺は昨日、ついカッとなってやった。反省してる。でも後悔はしてへん。あの状況では他に方法がなかった。反省してるんは、そんな状況になる前にハルヒを止められへんかったことや。」 【確かに俺は昨日、ついカッとなってやった。反省してる。でも後悔はしてない。あの状況では他に方法がなかった。反省してるのは、そんな状況になる前にハルヒを止められなかったことだ。】 『彼』はわたし達を見回して、言った。 「朝比奈さん、長門、古泉。みんなはそれぞれ所属するところから与えられた立場がある。ハルヒ自身に影響を与えへんように、なるべく介入したないと思(おも)とぉ。ハルヒの機嫌を損ねると、閉鎖空間が生まれ、下手したら世界が滅ぶ。せやから、原則としてハルヒの言うことにはすべて従う。たとえそれが、どんなに周りに迷惑掛けることやったとしても。違うか?」 【朝比奈さん、長門、古泉。みんなはそれぞれ所属するところから与えられた立場がある。ハルヒ自身に影響を与えないように、なるべく介入したくないと思ってる。ハルヒの機嫌を損ねると、閉鎖空間が生まれ、下手したら世界が滅ぶ。だから、原則としてハルヒの言うことにはすべて従う。たとえそれが、どんなに周りに迷惑掛けることだったとしても。違うか?】 「そこまでやないですけど、見方によっては確かにそのように見えるかもしれまへんなぁ。」 【そこまでではありませんが、見方によっては確かにそのように見えるかもしれませんね。】 「その点に俺は怒っとった。はっきり言うわ。要するにみんなは、後の影響が怖くてよう物も言われへんイエスマンや。」 【その点に俺は怒ってた。はっきり言うぞ。要するにみんなは、後の影響が怖くてろくに物も言えないイエスマンだ。】 「あなたはどうなの?」 わたしは問う。 「言(ゆ)うた通り、何より俺自身の不甲斐なさに怒っとぉ。俺の立場は何や? 何のしがらみもない一般人、違うか? 本来なら何も気にせんと、一番ハルヒに意見できて、止めることができる立場やんか。」 【言った通り、何より俺自身の不甲斐なさに怒ってる。俺の立場は何だ? 何のしがらみもない一般人、違うか? 本来なら何も気にせず、一番ハルヒに意見できて、止めることができる立場じゃないか。】 『彼』はやや自嘲めいた口調になる。 「昨日彼女に言われた通りや。俺は後が怖くて女一人、よう止めへんかった。最低や。」 【昨日彼女に言われた通りだ。俺は後が怖くて女一人、ろくに止められなかった。最低だ。】 『…………』 一同、沈黙する。 「俺、思うんやけどな。」 【俺、思うんだけどな。】 ややあって、『彼』が再び口を開く。 「昨日、ハルヒがあれだけ暴走したんは、結局のところ、周りの人間のこの態度が原因やったん違(ちゃ)うかな。」 【昨日、ハルヒがあれだけ暴走したのは、結局のところ、周りの人間のこの態度が原因だったんじゃないかな。】 「と、申しますと?」 「どいつもこいつも、ハルヒを変人と思って相手にせえへんか、あいつの顔色を伺うばっかりで、誰も止めへん。要するに、誰も『涼宮ハルヒ』という人物を一人の人間としてまともに扱ってへん。腫れ物を触るように扱ってて、心から向き合う人間がおらへんかったんかもな。今だって似たようなもん違(ちゃ)うか? 自律進化の可能性だの、時間断層の中心だの、世界の創造主だの。涼宮ハルヒという『人間』やなくて、何か『怒らせると怖いけど便利な存在』としてしか扱ってへんか? 一人の、『人間』涼宮ハルヒとして、心から向き合ってると断言できるか?」 【どいつもこいつも、ハルヒを変人と思って相手にしないか、あいつの顔色を伺うばっかりで、誰も止めない。要するに、誰も『涼宮ハルヒ』という人物を一人の人間としてまともに扱ってない。腫れ物を触るように扱ってて、心から向き合う人間がいなかったのかもな。今だって似たようなもんじゃないか? 自律進化の可能性だの、時間断層の中心だの、世界の創造主だの。涼宮ハルヒという『人間』じゃなくて、何か『怒らせると怖いけど便利な存在』としてしか扱ってないか? 一人の、『人間』涼宮ハルヒとして、心から向き合ってると断言できるか?】 「……そう言われると、耳の痛いところではおますなあ。」 【……そう言われると、耳の痛いところではありますね。】 古泉一樹は、思案顔で答えた。 わたしはどうだろう? ……考えるまでもない。 この銀河を統括する情報統合思念体によって創られた、対有機生命体コンタクト用ヒューマノイド・インターフェイス。それがわたし。 自律進化の可能性を秘めた涼宮ハルヒの観測と保全。 それが最初期に与えられた、わたしの使命。存在意義。一人の人間として涼宮ハルヒと向き合うことなど、当初から想定されていない。 では、それらの前提条件を外した、「わたし」という個体はどうだろう? もしわたしがそれらの任務ではなく、つまり『インターフェイス』としてではなく、一人の『人間』長門有希として、涼宮ハルヒに向き合うとしたら? 「自分が何をしても、誰も止めへん。そんな環境で育ったら、大概の人間は感覚が狂って、わがままで人の心を慮ることを知らんどうしようもない人間になる。他人がその行動でどんな気持ちになるか、誰も教えてくれへんからな。自分がされて嫌な事は、言えばすぐにされへんようになるのに、周りの人間は自分が何をしても何(なん)も言わん。ということは、周りの人間は何をされても嫌やない。そう思うように育ってしまうわけや。」 【自分が何をしても、誰も止めない。そんな環境で育ったら、大概の人間は感覚が狂って、わがままで人の心を慮ることを知らないどうしようもない人間になる。他人がその行動でどんな気持ちになるか、誰も教えてくれないからな。自分がされて嫌な事は、言えばすぐにされなくなるのに、周りの人間は自分が何をしても何(なに)も言わない。ということは、周りの人間は何をされても嫌じゃない。そう思うように育ってしまうわけだ。】 「でも、涼宮さんは、表面上はわがままな人かもしれへんけど、ほんまは仲間想いの優しい人違(ちゃ)いますか?」 【でも、涼宮さんは、表面上はわがままな人かもしれないけど、本当は仲間想いの優しい人じゃないですか?】 朝比奈みくるが反論する。 「もちろんそれは、俺も知ってます。でも、よう考えてみてください。その優しさが、ハルヒが『仲間』と思ったものだけにしか向けられへんとしたら。仲間以外は『好奇の対象』でしかなかったとしたら。仲間と認定されてへん者には、あいつはどう映るでしょうね?」 【もちろんそれは、俺も知ってます。でも、よく考えてみてください。その優しさが、ハルヒが『仲間』と思ったものだけにしか向けられないとしたら。仲間以外は『好奇の対象』でしかなかったとしたら。仲間と認定されてない者には、あいつはどう映るでしょうね?】 「あっ……!」 朝比奈みくるが息を呑む。 「確かに、好奇心は、時に残酷でんな。好奇心を満たすためには、対象には無慈悲になれます。」 【確かに、好奇心は、時に残酷ですね。好奇心を満たすためには、対象には無慈悲になれます。】 「蟻の脚や触覚を一本ずつ抜き、胴体を節目ごとにばらす。そんな残酷なこともできるやろ?」 【蟻の脚や触覚を一本ずつ抜き、胴体を節目ごとにばらす。そんな残酷なこともできるだろ?】 『触覚を』の辺りで、朝比奈みくるは耳を塞いだ。……身に覚えがあるのだろうか。 「あいつの好奇心は無邪気で、それだけに、時に残酷に人を傷付けることもある。普通は傷付き、傷付けられて、学習して人は成長していくもんやと俺は思う。でもあいつは、あんな性格であんな能力がゆえに、人からまともに相手にされへんで、学ぶ機会がなかったか、極端に少なかったんかもしれへんな。せやから、昨日みたいなことも平気でできた。そんな気がすんねん。」 【あいつの好奇心は無邪気で、それだけに、時に残酷に人を傷付けることもある。普通は傷付き、傷付けられて、学習して人は成長していくもんだと俺は思う。でもあいつは、あんな性格であんな能力がゆえに、人からまともに相手にされなくて、学ぶ機会がなかったか、極端に少なかったのかもしれないな。だから、昨日みたいなことも平気でできた。そんな気がするんだ。】 「あんさんの言いたいことは、わかりました。涼宮さんへの態度については、我々『機関』にも思い当たるところは多々おます。それはそれとして、昨日の一件についてはどない処理するおつもりで?」 【あなたの言いたいことは、わかりました。涼宮さんへの態度については、我々『機関』にも思い当たるところは多々あります。それはそれとして、昨日の一件についてはどう処理するおつもりで?】 古泉一樹は、普段の微笑に戻り問うた。 「俺は今言うたこと、俺の気持ちをそのままハルヒに伝える。何で殴られたか分からんままやったら、意味ないしな。ところで、古泉。昨日はあれから、やっぱり閉鎖空間が現れて大変やったやろ? 謝っとくわ。すまん。」 【俺は今言ったこと、俺の気持ちをそのままハルヒに伝える。何で殴られたか分からないままだったら、意味ないしな。ところで、古泉。昨日はあれから、やっぱり閉鎖空間が現れて大変だっただろ? 謝っとくぜ。すまん。】 『彼』は古泉一樹に頭を下げる。 「実はその件についても話がおましてな。」 【実はその件についても話がありまして。】 古泉一樹はやや困惑したような顔で言った。 「仰るように、昨日は巨大な閉鎖空間が現れました。確かに大変でした。しかし、その大変は普段とは別の意味でして……」 ここで言葉を切る。 「別?」 「ええ。巨大な閉鎖空間が現れ、《神人》が現れました。そこまではいつもの閉鎖空間なわけですが……その、《神人》の行動が普段と違(ちご)てましてん。」 【ええ。巨大な閉鎖空間が現れ、《神人》が現れました。そこまではいつもの閉鎖空間なわけですが……その、《神人》の行動が普段と違っていました。】 古泉一樹は、肩をすくめながら言った。 「いつもの破壊活動をせえへんのですわ。」 【いつもの破壊活動をしないのですよ。】 「何(なん)やて?」 【何だって?】 「現れはしたものの、特に何をするわけでもなく、何と言うか……そう、『呆然』としとった、っちゅうのが一番適切な表現かもしれまへんなぁ。確かにストレスは感じとんのに、どないしたらええんか分からんっちゅう様子でしたなぁ。今の涼宮さんの心境も、そんな感じ違(ちゃ)いまっか?」 【現れはしたものの、特に何をするわけでもなく、何と言うか……そう、『呆然』としていた、というのが一番適切な表現かもしれませんね。確かにストレスは感じているのに、どうしたら良いか分からないという様子でしたね。今の涼宮さんの心境も、そんな感じではないでしょうか?】 「そうか……」 『彼』は考え込みながら言った。 「まあ、今日はハルヒもおらへんし、また明日伝えることにするわ。学校に来てくれた方が話しやすいし。もし明日も来てへんかったら……しゃあないな。その時はハルヒを探しに行くわ。そういうわけで、今日は帰ってええかな?」 【まあ、今日はハルヒもいないし、また明日伝えることにするさ。学校に来てくれた方が話しやすいし。もし明日も来てなかったら……仕方ないな。その時はハルヒを探しに行くか。そういうわけで、今日は帰って良いかな?】 「そうでんな。また明日っちゅうことで、今日は帰りましょか。」 【そうですね。また明日ということで、今日は帰りましょうか。】 わたしは本を閉じた。皆が帰り支度を始める。いつもの部室の風景。 すべては明日。 しかし翌日、事態は思わぬ展開を見せることになる。 ←Report.01|目次|Report.03→
https://w.atwiki.jp/reportdesigner/pages/65.html
#blognavi Report Designerのチャート作成について、詳しい解説書を作りましたのでご参照ください。 RDチャート開発ガイド_ver1_101004_JPN.pdf RDチャートレポート作成に関する補足マニュアル_ver1_101004_JPN.pdf カテゴリ [FAQ] - trackback- 2010年11月02日 10 39 55 名前 コメント #blognavi
https://w.atwiki.jp/toho/pages/7112.html
燕石博物誌 ~ Dr.Latency s Freak Report. サークル 上海アリス幻樂団 Number Track Name Arranger Original Works Length 01 他愛も無い二人の博物誌 ZUN 2016作曲 オリジナル [03 29] 02 凍り付いた永遠の都 ZUN 2015作曲 東方紺珠伝 四面のテーマ [04 00] 03 Dr.レイテンシーの眠れなくなる瞳 ZUN 2016作曲 オリジナル [03 55] 04 九月のパンプキン ZUN 2015作曲 東方紺珠伝 鈴瑚のテーマ [03 46] 05 須臾はプランクを超えて ZUN 2016作曲 オリジナル [03 46] 06 シュレディンガーの化猫 ZUN 2016作曲 オリジナル [03 39] 07 空中に沈む輝針城 ZUN 2014作曲 東方輝針城 五面のテーマ [05 04] 08 禁忌の膜壁 ZUN 2016作曲 オリジナル [03 56] 09 故郷の星が映る海 ZUN 2015作曲 東方紺珠伝 六面のテーマ [02 33] 10 ピュアヒューリーズ ~ 心の在処 ZUN 2015作曲 東方紺珠伝 純狐のテーマ [05 12] 11 永遠の三日天下 ZUN 2014作曲 弾幕アマノジャク 終盤のテーマ [03 46] ブックレットではTr.4が「2016年作曲 純狐のテーマ」と誤植されている